c++ - The execution sequence after conditional variable notify -
there 2 threads (call them t1 , t2) sync each other boost condition variable , mutex like:
boost::condition_variable global_cond; boost::mutex global_mutex; boost::unique_lock<boost::mutex> lock( global_mutex); thread1() { global_cond.notify_one(); code_block_a(); } tread2() { global_cond.wait(lock) code_block_b(); }
let's can gugarntee thread2 come wait first , thread1 notify.
my question is, determinastic code_block_a() or code_block_b() execute first?
not guaranteed. system may perform context switching right after thread1
called notify_one()
, allow thread2() run. , may not.
please note code buggy because global_cond.wait(lock)
can spuriously woken , tread2
can run code_block_b()
before thread1()
has run.
Comments
Post a Comment