【发布时间】:2012-01-30 16:14:42
【问题描述】:
什么方法更好更快地创建临界区?
在 sem_wait 和 sem_post 之间使用二进制信号量。
或者使用原子操作:
#include <sched.h>
void critical_code(){
static volatile bool lock = false;
//Enter critical section
while ( !__sync_bool_compare_and_swap (&lock, false, true ) ){
sched_yield();
}
//...
//Leave critical section
lock = false;
}
【问题讨论】:
-
个人资料!轮廓!个人资料!......
标签: c multithreading gcc atomic critical-section