$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: terekhov (terekhov_at_[hidden])
Date: 2001-12-12 11:13:58
--- In boost_at_y..., Beman Dawes <bdawes_at_a...> wrote:
> At 04:13 AM 12/12/2001, p_michel_andre wrote:
>
> >I was one of the guys proposing a solution to Beman for the Alarm
> >feature in NT. My solution doesn't use Terminate thread. Below is
a
> >short description:
> >
> >The alarm class creates an external thread to handle the timeout
and
> >if an timeout occurs the external thread suspends the original
thread
> >and perfoms a GetThreadContexts and sets the x86 Eip program
counter
> >to a function that raises an user defined software exception which
> >then can be caught via NT:s exception mechanism (and rethrown as
an
> >C++ exception to be caught). The interface was something like:
> >try
> >{
> > Alarm alarm(1000); // timeout in msecs
> > lenghty_call(); // call that takes more than 1000 msecs
> >}
> >catch(Alarm::Timeout&)
> >{
> > std::cout << "Timeout occured!";
> >}
> >
> >But that can of course be changed.
> >
> >
> >Actually I havent got the code. Maybe Beman still has it. Ive had
a
> >disk crash so i have to rewrite it or reload an backup.
>
> It has disappeared from my hard disk too. Let me check backups.
>
> Wow! That was fast. CD backups make it much easier to recover
single
> files than from the tape system I used to use.
>
> See attached.
[ ... see http://sources.redhat.com/cgi-
bin/cvsweb.cgi/pthreads/cancel.c?rev=1.21&content-type=text/x-cvsweb-
markup&cvsroot=pthreads-win32 ;-) ]
Do you mean that all the code you are going to "test" using
Alarm/Alarm::Timeout exception is supposed to be async.cancel
safe?!?! (i.e. it will not acquire any resources including
locking some mutex; e.g. some libc/c++ internal mutex, etc..
see Butenhof's PWPT book for details (dangers) with respect
to async.cancelation).
regards,
alexander.