[問題] 讓執行到一半的Thread停止

看板C_and_CPP (C/C++)作者 (littleboypis)時間16年前 (2009/02/14 13:45), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串1/2 (看更多)
請問一下 我要如何讓執行到一半的Thread停止呢 例如Thread正在執行 for( j = 0; j < 100; j++ ) { printf( "j=%d\n", j ); } 另一個Thread呼叫了 killthread( thread_id ) 那這一個功能是要怎麼去做呢 我不太曉得怎麼中止執行到一半的Thread 我有試過Pthread_kill, Pthread_cancel 可是Thread還是會從頭執行到尾 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.238

02/14 13:49, , 1F
多加一個flag在迴圈裡判斷是否要跳離開來
02/14 13:49, 1F

02/14 13:50, , 2F
不過你才跑100次 或許時間實在太短
02/14 13:50, 2F

02/14 13:50, , 3F
根本來不急讓其它thread去殺死他或怎樣 就已經沒了
02/14 13:50, 3F

02/14 13:59, , 4F
請問外部要和即時控制thread, 是不是只能用全域變數
02/14 13:59, 4F

02/15 01:56, , 5F
不知道原po是要 暫停or終止 一個thread?
02/15 01:56, 5F

02/15 01:57, , 6F
你可以查查 POSIX thread 的範例 應該有你需要的解法
02/15 01:57, 6F

02/15 01:58, , 7F
一個process包含多個thread 用thread的目的就是為了共用
02/15 01:58, 7F

02/15 01:58, , 8F
同一個process內的資源 so 如果要跨thread進行控制
02/15 01:58, 8F

02/15 01:59, , 9F
你可以使用 global var不過 或許應該宣告成 volatile
02/15 01:59, 9F

02/15 02:00, , 10F
以避免 其它的thread 不經意的改變該var的數值
02/15 02:00, 10F

02/16 15:04, , 11F
pthread_kill 很暴力,cancel 是要到 cancel point 才會停
02/16 15:04, 11F
文章代碼(AID): #19bbfseo (C_and_CPP)
文章代碼(AID): #19bbfseo (C_and_CPP)