Re: [問題] thread 和 string
※ 引述《adrianshum (Alien)》之銘言:
: 我所知大部份 STL 的 string implementation 都是用 COW的.
不是吧
至少VC8, VC9, gcc(SGI)下內建的STL我都trace過
都是full copy而不是copy on write
在C++上要依std::string規格實作copy on write其實很複雜
std::string a = "abcde";
std::string b = a; // 內部使用COW?
char* pc = &(b[2]); //沒有write, 傳出raw pointer前要Copy嗎?
*pc = "Z"; // 現在呢?
不是無解,要Proxy class或operator[]就copy之類的....
做了也不一定比較快
: 所以, 問題不在於 "new" 是不是 thread safe etc.
: 當然, COW 如果有做適當的 synchronization 也是 thread safe 的.
: 對於原 po 的問題, 萬一你用的是 VC++ 6 的話 (後來的 version 我沒有
: 留意了), 的確會有 race condition, 當年工作時因為踫到問題, trace 過
: string 部份的 code 發現的. 萬一你真的剛巧就是用 VC++ 6, 強烈建議轉
: 用別的 STL implementation (STL Port, Apache Std Lib 等)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.124.99.126
※ 編輯: yzugsr 來自: 59.124.99.126 (06/04 11:39)
推
06/04 11:39, , 1F
06/04 11:39, 1F
→
06/04 11:45, , 2F
06/04 11:45, 2F
→
06/04 11:45, , 3F
06/04 11:45, 3F
→
06/04 11:45, , 4F
06/04 11:45, 4F
→
06/04 12:12, , 5F
06/04 12:12, 5F
→
06/04 12:18, , 6F
06/04 12:18, 6F
→
06/04 12:18, , 7F
06/04 12:18, 7F
推
06/04 19:06, , 8F
06/04 19:06, 8F
→
06/04 19:06, , 9F
06/04 19:06, 9F
→
06/04 19:07, , 10F
06/04 19:07, 10F
→
06/04 19:08, , 11F
06/04 19:08, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):