读书人

对list应用临界区是否有效

发布时间: 2012-08-02 11:35:26 作者: rapoo

对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来保证数据同步
[解决办法]

探讨

如果只读,就无所谓同步,除非有读写同时发生,那么就需要lock来保证数据同步

读书人网 >VC/MFC

热点推荐