MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 多线程同步, 大神快点来!解决方案

多线程同步, 大神快点来!解决方案

www.MyException.Cn  网友分享于:2013-02-20  浏览:5次
多线程同步, 大神快点来!!!
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或数组

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有