pthread rwlock从不同的线程锁定/解锁

时间:2014-12-18 08:00:44

标签: multithreading synchronization pthreads posix rwlock

文档说从一个线程锁定并从另一个rwlock解锁会导致未定义的行为。我有一个数组和两个线程,一个分配它,一个解除分配它,这发生在一个循环中,并且还有一些线程读/写,但它们从不重叠,因此不需要同步。问题是读/写线程仍然尝试在dealloc-alloc之间的时间范围内使用该数组。我正在考虑为读/写线程使用读锁定并锁定数组以在dealloc线程中写入并解锁在alloc线程中写入。但是这会导致未定义的行为,因为它们发生在不同的线程上。在这种情况下,什么是正确的方法?

1 个答案:

答案 0 :(得分:3)

您需要一些存储状态的变量。您可以使用锁保护该变量。因此,当线程需要检查或更改状态时,它会获取锁,检查或更改状态,然后释放锁。