1. In a multithreading computer system, a method comprising: creating, at a user level, a collection data structure for a first thread; collecting representations of a first plurality of events in said collection data structure; initiating blocking, at said user level, said first thread based on said first plurality of events; receiving notification of occurrence of one or more events; checking whether said collection data structure includes at least one of said occurred event(s); and initiating unblocking, at said user level, said first thread upon occurrence of at least one event represented in said collection data structure.