我有2個線程,他們都刪除內存在兩端nedded。我的問題是,也許可能發生線程在另一線程啓動之前開始並完成,因此它會刪除另一線程所包含的內存。我如何同步它們,以免發生這種情況。
作爲設計我的主題是這樣的:同步2 posix線程
void* thread1(void* arg)
{
lock(&mutex);
counter++;
unlock(&mutex);
// more code here
lock(&mutex);
counter--;
if(counter == 0)
{
delete a;
delete b;
}
unlock(&mutex);
}
另一個線程看起來是一樣的,但是這不是unoff停止線程1線程2開始之前完成。
謝謝。
是的,這也是我的解決方案,我現在看到它的工作。謝謝 – Kobe 2011-03-05 14:23:51
那麼如果第一個線程在第二個線程啓動之前開始並結束呢? – johnnycrash 2011-04-06 21:19:20
然後'第二個線程啓動時'計數器== 1',直到它需要互斥體。當thread2獲取互斥鎖時,'counter ++'將其提升到2,並且thread2可以繼續進行清理。 – Mat 2011-04-06 21:23:58