读书人

用COW实现的std:string会不会有线程有

发布时间: 2012-04-11 17:42:33 作者: rapoo

用COW实现的std::string会不会有线程问题?
本版的一个帖子中说到:
微软在vc2003之后好像都不再使用cow来实现字符串类了
多线程, 有可能会带来严重的后果, 随便举例吧(代码未验证只为展示问题), 假如一个COW实现的std::string, 如下代码:

C/C++ code
 void test_thread(std::string& str) {    // 这里使用或修改str时, 因std::string中并没有锁(只有引用计数, 但是保证不了buffer的同步访问)... } {   ...   std::string orig = "hehe";   std::string clone = orig;   boost::thread(&test_thread, boost::ref(clone));   // 这里修改orig. }

问题是,如果string类对象里面带锁是不是就能解决这个问题了?


[解决办法]
不加锁肯定有问题。
[解决办法]
有问题,现在跟多库在小对象上早就抛弃了cow

读书人网 >C++

热点推荐