[Boost-bugs] [Boost C++ Libraries] #9845: Nondeterministic behavior of boost::thread::try_join_for()

Subject: [Boost-bugs] [Boost C++ Libraries] #9845: Nondeterministic behavior of boost::thread::try_join_for()
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-04-07 10:46:56

#9845: Nondeterministic behavior of boost::thread::try_join_for()
 Reporter: sunheretic13@… | Owner: anthonyw
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: thread
  Version: Boost 1.54.0 | Severity: Problem
 Keywords: |

 I want to say that this function 'boost::thread::try_join_for()' works
 very strange. Which negates the possibility of its use in certain

 I want to control - the thread executed or not? Just check , I do not want
 to wait for minutes or hours waiting for its completion.

 For me, it would be logical to pass as a parameter to '0' in function
 boost::thread::try_join_for(), but it turned out that the result of the

 As it turned out function checks timeout check and only then checks the
 state of the thread.

 Some people advise to pass as a parameter small delay. But I say - this is
 not a solution because :

 1. There is no official document describing the magnitude of the delay.
 How it should be - one second? 1 millisecond? 1 microsecond? 1 nanosecond?
 2. The current implementation of the function boost::thread::try_join_for
 ('small delay') will give a different behavior depending on your
 computer's performance, CPU utilization, and moon phases. Which is clearly
 not fit for industrial programming.
 3. Applying pure WinAPI - WaitForSingleObject(hThread, 0) can achieve the
 correct result. But it WINAPI, not boost.

 I think that the function should be rewritten to resolve the ambiguity of
 her behavior.

Ticket URL: <https://svn.boost.org/trac/boost/ticket/9845>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:15 UTC