[問題] Pthread暫停和恢復功能

看板C_and_CPP (C/C++)作者 (littleboypis)時間16年前 (2009/03/08 16:43), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
Pthread有暫停suspend和resume功能嗎 因為我需要讓Thread在執行到一半時暫停 像是 Work Thread Exec Body { for( i = 1~100 ) { call_action_1(); call_action_2(); call_action_3(); } } Another Thread { pthread_suspend(); if( cond == true ) pthread_resume(); } another thread執行了pthread_suspend work thread就放下執行工作停下 可能停在任意的一行code上, 有可能是action1或者action3 不曉得Linux上的PThread有沒有支援 我查google 和 API好像都沒這兩個功能 不曉得有什麼方式可以達到 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.216.117 littleboypis:轉錄至看板 Programming 03/08 16:43

03/08 16:52, , 1F
有些系統會提供非標準的函式 (_np 結尾的 pthread 函式)。
03/08 16:52, 1F

03/08 16:54, , 2F
譬如 FreeBSD 有 pthread_suspend_np, pthread_resume_np
03/08 16:54, 2F

03/08 17:10, , 3F
不過有不少論點和實作經驗證實這樣設計程式很危險。
03/08 17:10, 3F

03/08 20:37, , 4F
用condition去擋吧 會需要突然去擋一個thread嗎???
03/08 20:37, 4F

03/08 20:42, , 5F
回softwind大,真的有此需要 得突然暫停某個Thread
03/08 20:42, 5F

03/08 21:22, , 6F
一般不建議這麼做的理由就是你很難判斷你 suspend 的
03/08 21:22, 6F

03/08 21:22, , 7F
thread 目前到底在幹什麼,或是做某件事做到什麼程度了。
03/08 21:22, 7F

03/08 21:23, , 8F
比方說正在修改 linked list 的 pointer 到一半被停住,然
03/08 21:23, 8F

03/08 21:23, , 9F
後那個 linked list 又馬上被拿來存取。
03/08 21:23, 9F

03/09 11:52, , 10F
喔喔,我好像認識你,你可以用 pthread_cond_wait
03/09 11:52, 10F

03/09 13:42, , 11F
他是要暫停自己這個thread的話就沒問題,但是不能中斷別人
03/09 13:42, 11F
文章代碼(AID): #19iuKTag (C_and_CPP)
文章代碼(AID): #19iuKTag (C_and_CPP)