对list使用临界区是否有效?
struct junode
{ CString ju;
int pinlv;
}
list <junode> julist;
junode tempju;
一个函数处理一个list中的数据,为提高速度,对该函数启动了4个线程,
定义了一个iterator plist 指向 list,
EnterCriticalSection(&cs);
tempju.ju=plist->ju;//取得链表中的数据。
tempju.pinlv=plist->pinlv;//取得链表中的数据。
list++;
LeaveCriticalSection(&cs);
这样4个线程中得到的数据是 一样的,就是说 临界区没有起到作用。
请教如何解决。
[解决办法]
plist++; ??
[解决办法]
使用的话 保险一点吧,这样就可以保证 每次只能有一个线程访问该list
[解决办法]
如果都只读list 不erase pop 啥的.安心吧.很安全.
[解决办法]
如果只读,就无所谓同步,除非有读写同时发生,那么就需要lock来保证数据同步
[解决办法]