情况是这样的
有一万个数据,代表一万个用户,每一个用只能由自己操作,有可能有操作要花一点时间.每个用户不会访问到另一个用户的数据,但每一个用户可能被多个线程访问.现在就是要处理这个互斥问题.难道要我分配一万个临界区对象?
现在讨论这个问题
1.如果使用一万个临界区的话,会不会占用非常大的系统资源,如果没有这个问题就解决了
2.有没有另一个方法来解决,显然不能全部共有一个临界区,因为有的操作要花时间,比如阻塞半秒钟,那其他的就全部被阻塞了.
大家想想有什么好的办法没有?

解决方案 »

  1.   

    sizeof(CRITICAL_SECTION) == 24
    24 * 10000 240k 不算什么
      

  2.   

    我觉得你的电脑还没快到能并发完成1w个操作,所以没必要各使用各的临界区,可以分配n个临界区(n<10000)。将数据分为n个区间,每个区间的数据共用一个临界区。另外n的数量最好能按照运行程序电脑的性能来配置,这样灵活性也有了
      

  3.   

    这个是在服务器上用的.性能应该不错.
    如果分为N个区间的话,还是想知道到底临界区占用的资源大不大.
    至于精灵王子的方法不行的,如果一个失败了,那么失败这个怎么处理呢?用一个while(true)查询直到成功?这样更不好.如果和洗澡就是浪费生命说的,临界区本身不分配什么东西,只占一点内存,那一万个我觉得应该没问题.实际上我操作的线程并不多,比如20个吧.但用户数据多.
      

  4.   

    我先考虑一下microyzy的思路,dentistrydoctor的想法无法避过某个线程占用过长时间的问题