On 7/10/2021 22:09, Alexander Carôt wrote:
I had been using an old boost system and boost thread lib for a couple of years
without upgrading it since approx. 2014. With this old lib the following
(simplified) code works fine on OSX:
#include "test.h"
test::test() {
boost::thread::attributes attrs;
/// START TRACEROUTE THREAD
#if defined(BOOST_THREAD_PLATFORM_WIN32)
res =
SetThreadPriority(attrs.native_handle(), THREAD_PRIORITY_NORMAL);
#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
pthread_attr_setschedpolicy(attrs.native_handle(), SCHED_FIFO);
#endif
tracerouteThread = boost::thread(
attrs, boost::bind(&test::performTraceroute, this));
For Win32, you can't call SetThreadPriority like that -- at best, that's
doing nothing, at worst, you're changing the priority of some random
thread but never the one you intend. (The attrs.native_handle is not a
thread handle.)
You must wait until the thread is actually started before you can set
its priority. Usually the best place to set it is from the thread's
method itself.
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users