Re: [boost] This deadlocks on Linux but not on Windows

Thank you to everybody who responded to my post. I used the solution sugested by several people who said I should use control objects, with the function wait. I posted the final version of my code. The purpose of the project is to create a thread manager which will let threads execute based upon the priority of that thread: http://acumenconsultinginc.net/TechNotes/cpp/PriorityThreadQueue/index.html --------------------------------- Looking for last minute shopping deals? Find them fast with Yahoo! Search.

Clark Sims wrote:
Thank you to everybody who responded to my post. I used the solution sugested by several people who said I should use control objects, with the function wait. I posted the final version of my code. The purpose of the project is to create a thread manager which will let threads execute based upon the priority of that thread:
http://acumenconsultinginc.net/TechNotes/cpp/PriorityThreadQueue/index.html
Hi Clark, The operating system provides facilities for setting and changing the priorities of threads. (Well, at least POSIX does; I presume that Windows does too.) As I understand it, Boost.Threads doesn't provide a mechanism to control these priorities. The thread class in C++0x will provide a "native handle" that you could use; perhaps it should provide a direct way to control the priorities, if there is sufficient commonality between the platforms? Anyway, I'm curious to know whether the functionality that your priority queue implements could have been achieved using O.S. facilities, if they had been accessible to you. Phil.

Phil Endecott skrev:
Clark Sims wrote:
Thank you to everybody who responded to my post. I used the solution sugested by several people who said I should use control objects, with the function wait. I posted the final version of my code. The purpose of the project is to create a thread manager which will let threads execute based upon the priority of that thread:
http://acumenconsultinginc.net/TechNotes/cpp/PriorityThreadQueue/index.html
Hi Clark,
The operating system provides facilities for setting and changing the priorities of threads. (Well, at least POSIX does; I presume that Windows does too.) As I understand it, Boost.Threads doesn't provide a mechanism to control these priorities. The thread class in C++0x will provide a "native handle" that you could use; perhaps it should provide a direct way to control the priorities, if there is sufficient commonality between the platforms?
Anyway, I'm curious to know whether the functionality that your priority queue implements could have been achieved using O.S. facilities, if they had been accessible to you.
I have not studied Clark's code yet, but I think the difference is that a priority queue can manage priority between messages in the queue prior to dispach to the worker threads. OS thread priorities can only affect scheduling of CPU time to the worker threads. Hence, with OS thread priorities only, a high priority message may have to push a back-log on the queue of lower priority messages in front of it before it can get dispached to a worker thread. -- Bjørn
participants (3)
-
Bjørn Roald
-
Clark Sims
-
Phil Endecott