看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《softwind (software everywhere)》之銘言: : 同時另一個小問題 : 如果我有兩個task, 假設是 常見的 UI和File system兩個task : 假設今天user要求show檔案列表 : so UI task 初始化一個structure 然後丟給 FS task : FS task 把file list填完再回給UI task(先不管blocking or non-blocking) : 然後UI 再把file list show出來 : 上面是預期的行為 似乎看起來也很正常 : 可是也有可能 萬一 今天UI init value後 丟給FS task撈list, : 結果還沒有切到 FS task, UI 就繼續往下run... : 這樣就會show出 空的file list這是錯誤的操作 : 這樣來看的話 UI get FS的list 的動作 是不是只能是 : 1. blocking call. : or : 2. 如果是 non-blocking, 也要用 condition var 擋住task執行? : 這樣的FS API 才能叫做 thread-safty? 試著回答你這個問題 1. 令UI task的List叫UIList 2. 令FS task的List叫FSList FS task還沒搜尋結束前, UI task先show空白List(即UIList). 搜尋結束後, FS task再通知UI task搜尋的結果(即FSList). UI task收到通知 後把FSList加入至UIList. 重點只有一個, UIList只有UI task在操作. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.147.174