写入互斥共享资源

时间:2012-01-24 06:03:23

标签: c++ multithreading locking pthreads mutex

我有一个由多个线程处理的C ++列表。

每个线程在列表上创建一个pthread_mutex_lock,以便其他线程不会“干扰”列表。作为处理的一部分,每个线程还列出了push_back个数据。

我的问题是 - 互联网上的push_back列表是个坏主意吗?当线程在列表中输入更多数据时,互斥锁是否仍然有效?我在pthread_mutex_lock上看到的大多数文档/示例都只是“读取”,所以我很想知道在共享资源上获取锁定,写入的同一个线程会发生什么。

2 个答案:

答案 0 :(得分:0)

互斥锁需要对整个线程组是唯一的(即所有线程必须使用相同的互斥锁)。如果为每个线程创建一个互斥锁,那么根本就不是线程安全的,因为每个线程都会在自己的互斥锁上等待,而不是与其余线程同步。

是的,获得的互斥锁可以安全地用于读写。

答案 1 :(得分:0)

只要该特定线程只持有锁,并且没有其他线程可以使用此锁,写入应该没问题。想一想为什么会出现问题?如果一个线程正在写入而另一个线程同时读取则会出现问题。如果一个球是你的,你可以做任何事吗?事情在他们分享后会发生变化。