www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - "waking up" a thread

reply funog <funog ifrance.com> writes:
Is there a way to make the current thread sleep for a given amount of time,
while having the possibility of another thread "waking it up" earlier?
Aug 12 2009
parent reply "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Wed, 12 Aug 2009 13:00:22 -0400, funog <funog ifrance.com> wrote:

 Is there a way to make the current thread sleep for a given amount of  
 time, while having the possibility of another thread "waking it up"  
 earlier?
Create a mutex/condition pair, then have one thread wait on the condition with a timeout. The second thread signals the condition to wake it up early. If you are using D1, then you have to use Tango (I think), and the classes are tango.core.sync.Mutex and tango.core.sync.Condition If you are using D2, then they are in druntime, probably core.sync.Condition and core.sync.Mutex, not sure though. -Steve
Aug 12 2009
parent reply funog <funog ifrance.com> writes:
Steven Schveighoffer Wrote:

 On Wed, 12 Aug 2009 13:00:22 -0400, funog <funog ifrance.com> wrote:
 
 Is there a way to make the current thread sleep for a given amount of  
 time, while having the possibility of another thread "waking it up"  
 earlier?
Create a mutex/condition pair, then have one thread wait on the condition with a timeout. The second thread signals the condition to wake it up early. If you are using D1, then you have to use Tango (I think), and the classes are tango.core.sync.Mutex and tango.core.sync.Condition If you are using D2, then they are in druntime, probably core.sync.Condition and core.sync.Mutex, not sure though. -Steve
Thanks for your answer. If there is a way without tango I am interested.
Aug 12 2009
parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Thu, 13 Aug 2009 02:59:39 -0400, funog <funog ifrance.com> wrote:

 Steven Schveighoffer Wrote:

 On Wed, 12 Aug 2009 13:00:22 -0400, funog <funog ifrance.com> wrote:

 Is there a way to make the current thread sleep for a given amount of
 time, while having the possibility of another thread "waking it up"
 earlier?
Create a mutex/condition pair, then have one thread wait on the condition with a timeout. The second thread signals the condition to wake it up early. If you are using D1, then you have to use Tango (I think), and the classes are tango.core.sync.Mutex and tango.core.sync.Condition If you are using D2, then they are in druntime, probably core.sync.Condition and core.sync.Mutex, not sure though. -Steve
Thanks for your answer. If there is a way without tango I am interested.
Yes, use D2. -Steve
Aug 13 2009