1. A method for sharing a hardware resource in a computer system running at least one software process having multiple threads, the method comprising: (a) providing a lock_indicator in data structures within the computer system; (b) receiving a request to use the hardware resource by one of the threads defined to be a requesting tread; (c) determining based on said lock_indicator whether the hardware resource is available for use by said requesting thread; and (d) if said (c) indicates that the hardware resource is available: (1) setting said lock_indicator under control of the hardware resource to instead indicate that the hardware resource is unavailable; and (2) signaling with a go_indicator to indicate that use of the hardware resource for said request can proceed.