|
Boost Users : |
From: Ben Hutchings (ben.hutchings_at_[hidden])
Date: 2005-03-23 12:50:18
Peter Dimov wrote:
> Vladimir Prus wrote:
>
>> Peter Dimov wrote:
>>
>>> None (if you are sure that this is what assert does, of course -
>>> this is platform specific), except that the asserts should not fire.
>>> So spending time and effort to make something happen when the
>>> asserts fire is not productive.
>>
>>
>> I disagree. Here, two people report that they got assertion failures.
>> Good, but we have no idea why. If there were additional diagnostic,
>> we'd knew the exact system error which was reported.
>
>
> Hm.
>
> Thorsten Froehlich reports that on Mac OS X pthread_join on a thread
> that has completed returns EINVAL. He is given a lecture on
> pthread_join. Nobody with Mac OS X access bothers to investigate, at
> least not visibly.
<snip>
Well, if anyone would care to compile and run the following program on
Mac OS X using pthreads, we can at least tell whether there is a
consistent failure:
// BEGIN
#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
#include <ostream>
void my_sleep(int sec)
{
boost::xtime stop;
boost::xtime_get(&stop, boost::TIME_UTC);
stop.sec += sec;
boost::thread::sleep(stop);
}
void do_nothing() {}
int main()
{
boost::thread thread1(do_nothing);
my_sleep(1);
std::cout << "Joining exited thread\n";
thread1.join();
boost::thread thread2(boost::bind(my_sleep, 5));
std::cout << "Joining running thread\n";
thread2.join();
}
// END
It works for me on Windows XP (compiled with VC++ 7.1) and Linux 2.6
(compiled with g++ 3.3).
Ben.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net