多个线程,同时访问一个数据库中的表,用m_nDefaultType = snapshot;这种快照方式进行从CRecordSet派生一个类(Cmyrs)指向这个表
比如有100个线程同时用这个类对数据库表B进行访问,需要协调吗?
在100个线程同时访问这个表的时候:
Cmyrs myrs;myrs.m_strFilter(....);
myrs.Open();
....
'''''  操作
myrs.Close();--------------同时100个线程都用上面的代码对这个表进行访问,有没有影响
需要不需要用事件之类的对这个表资源进行下管理每次只让一个线程访问

解决方案 »

  1.   

    线程同步。
    方法很多,自己google
      

  2.   

    我知道网上很多但很多都是COPY的,毫无借鉴价值
    再则,我的问题不是问,怎么同步
    我是问,如果三个同步的线程由于一个事件而一直处理等待状态,而他们的是一直不断的去循环等待事件被释放那其他的线程会不会收到影响--------------------------------
      

  3.   

    a b c d 这个四个线程在程序一启动
    就都启动了注意:有个全局 事件,这个全局事件仅仅对b c d 这三个线程有影响
    对线程a没有影响。b c d三个线程要再获得事件后,才能执行,否则,都是处于等待状态,虽然他们已经启动了,但仅仅是等待,没有进行任何动作。-----------------------------
    如果,b c d三个线程,在线程b获得事件而执行的时候,由于某种特殊的情况而一直没有释放事件给其他c d 线程,c d线程就会一直等待,
    我想问的是:线程a会不会收到影响??
      

  4.   

    TO baosanr:现在是这样的,全局事件对那100个线程才有限制但对这100个线程意外的其他线程是没有影响的,其他线程的运行不需要得到事件的通知
    ===================
    问的是:如果,因为这100个线程某一个线程由于非常特别的原因,一直没有释放掉事件显然,那99个线程会一直等下去,这个我知道----------------------我要问的是:100以外的其他线程会受到影响吗?对了,什么效率之类的,就不要说了
    我主要是说,100以外的线程还能不能正常的各自执行
      

  5.   

    如果你的每个线程有自己的连接,有自己的RECORDSET就让数据库自己去解决同步吧,完全不关你的事,试想下很多进程同时访问进不是数据库自己解决了?你多线程同步比多进程同步容易多了如果你的线程共享了数据,如连接等,那你就自己解决同步吧不然会死得很惨