看板 C_and_CPP 關於我們 聯絡資訊
void thread_function(){ string xxx; ... } 如果像上面一樣在thread裡面建構一個string 會因為 string 是動態物件 使得多個 thread 共用到同一個 string 造成 race condition 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.119.103
legnaleurc:不會,除非你的 string 實作品有用到 COW 06/03 19:28
sitos:local variable 一般而言不會共用 06/03 19:29
legnaleurc:不過應該沒什麼環境會用 COW 去實作 string 06/03 19:29
elfkiller:可是 string 不是會動態要求記憶體嗎會不會在 heap 中呢 06/03 19:55
Ebergies:string 動態要求記憶體為啥會 race condition? 06/03 20:26
elfkiller:因為 thread 不是會共用 heap 嗎? 06/03 20:46
Ebergies:那你應該是問 "new" 是不是 thread safe 06/03 20:59
Ebergies:基本上, "大部分" 都是 06/03 21:00
firose:除非用同一個指標指涉它, 就像 singleton 那樣, 才有 data 06/03 21:06
firose:race. stack 變數不會共享, 沒問題, 執行緒都有自己 stack 06/03 21:07
sitos:就算共用 heap ,兩次 new 出來也不會指到同一個地方 :) 06/04 03:00