写入互斥的共享资源

Writing to a mutex'ed shared resourced

本文关键字:共享资源      更新时间:2023-10-16

我有一个C++列表,它正在由多个线程处理。

每个线程在列表上创建一个pthread_mutex_lock,这样其他线程就不会"干扰"列表。作为处理的一部分,每个线程还push_back列表上的数据。

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

只要只有那个特定的线程持有锁,并且没有其他线程可以使用这个锁,那么写应该是可以的。想想为什么会出现问题?如果一个线程在写,另一个线程同时在读,那将是一个问题。如果球是你的,你可以用它做任何事情,对吗?事物在共享时会发生变化。

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

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