首页 > pthread 同步锁的问题

pthread 同步锁的问题

需求:

主线程和8个子线程,要求
1.主线程和其他8个线程(执行相同的函数fun)互斥(只要主线程开始运行,其他线程都必须等他,知道它sleep)
2.8个子线程之间可以乱序执行

我的想法:

1.使用互斥锁mutex,首先,加互斥锁,主线程加锁,fun加锁,这样满足了条件1,但会导致8个子线程也被迫同步了
2.使用semaphore,当主线程进入,直接将semaphore一直减到0,这样其他线程就不能运行了,退出时,semaphore加到8,这样8个线程就可以乱序了!问题是没有api可以直接改变semaphore的值。

有没有比较好的思路呢


其实这个容量为8的信号量可以换成8个独立的mutex。每个子线程访问自己的就好了,主线程先都拿走,最后都放回。

这是一个简化了的读写者问题。


用读写锁 pthread_rwlock_t
主线程写,其他线程读

【热门文章】
【热门文章】