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