Du kan implementere en "annuller-lignende" adfærd på denne måde:
Du udfører forespørgslen på en separat tråd, der bliver ved med at køre, uanset om timeoutet indtræffer. Timeoutet indtræffer på hovedtråden og sætter en variabel til "1", hvilket markerer, at det er sket. Så gør du hvad du vil på din hovedtråd.
Forespørgselstråden, når forespørgslen er fuldført, kontrollerer, om timeout er indtruffet. Hvis den ikke har det, udfører den resten af det arbejde, den skal udføre. Hvis den HAR, låser den bare de borde op, den lige har låst.
Jeg ved godt, at det lyder lidt sløset, men låseoplåsningsperioden skal grundlæggende være øjeblikkelig, og du kommer så tæt på det resultat, du ønsker som muligt.