开一个线程,然后这个线程就得通知先前所有的这些线程 我打开了 怎么做?
有一个这样的程序
同时要开 几百个线程,这些线程正在通讯
然后了又开一个线程,然后这个线程就得通知先前所有的这些线程 我打开了 怎么做?
如果用共享变量的方式 那么就有 几百的循环了 这样开销太大啊 有别的方式吗?
网上搜索了哈 信号量 神马的
可是没找到点好资料
有点迷糊
如果有实例代码最好c
[解决办法]
一般来说,线程的个数不应该超过cpu个数的两倍,否则,效率会有所下降。
要让所有已存在的线程得到一个新创建的线程的通知,这个,通知的具体内容不明确,所以无法提供比遍历更好的方法了。
[解决办法]
几百个线程是没必要的
一般的并发服务器,udp可能只有一个或几个线程,tcp多些但通常也不会是几百个
在这种大规模并发,如果硬件跟不上或者其他地方的瓶颈没解决,对效率反而是反作用
你要做的是使用一个队列缓存用户请求,另外尽量减少单次处理时间,根本不需要“一个请求一个线程”(不少服务器编程的书都习惯玩这个概念,已经成为误导新手的大毒草了)