多线程同步, 大神快点来!!!
vecotr<socket> client_list; // 存放连接的客户端
// 主线程
sock = accept(); // 阻塞, 返回连入的socket;
enter_criticalsection(); // 进入临界区
client_list.push_back(skck);
leave_criticalsection(); // 离开临界区
// 发送线程
enter_criticalsection(); // 进入临界区
for ( 遍历client_list )
逐个发送消息..
leave_criticalsection(); // 离开临界区
为了线程对client_list的同步..
发送线程的for循环在临界区中..
而for循环可能要执行很多遍, 而且发送消息的时间可能也比较长..
这里存在的问题就是, 发送线程的临界区里的代码执行时间太长了.
这样会导致主线程等很久..
有没有办法解决这个问题呢???
我对多线程不太会..
希望大神能传授一些技巧..
在此谢过..
多线程
c++
同步
编程
技巧
------解决方案--------------------一种思路是先加锁把client_list拷贝到另一个list或数组里
然后就可以不用加锁的遍历另一个list或数组