I am writing an article about programming but I am confused with the usage of 'without' in my case.

The sentence is:

Goroutines may obtain Read-Locks utilizing RWMutex without having blocked one another.

The problem is with the bold part.

Am I supposed to use '-ing' here? When I should use 'having V3' pattern just over present participle?


I couldn't speak to a general principle, but in this particular case:

"Without blocking" seems like "obtaining a read lock will not cause blocking as a side effect", thus "you can obtain the read lock and be sure the routine won't block".

"Without having blocked" seems like "it is okay to obtain a read lock without first blocking", as if "blocking" might be an operation the routine might explicitly carry out, and there's no need to do this before obtaining a read lock.

I would guess that the intended meaning is more like the first one, though this depends on what you're really trying to say.


I believe the bold phrase is a gerund with a past participle.

If you are also wondering why it doesn't just say blocking instead, I think this post explains the difference between the two well. As they put it, essentially it comes down to "the uncertainty or certainty of when the original event took place." Which can be an important distinction to make when talking about programming and when code is executed.

It could just be unnecessary in your example though and "blocking" would be clearer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.