当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我想要这个些类,把他们包含到phplib里面,方便使用,请大家给我点资源,能发到我油箱吗cdm11cn@hotmail.com ,有的话那就谢谢了,网上真的是很难找啊!! ......
    摘要: 我对此很迷茫,效率差不多吧 ......


关于线程同步的问题

程序结构是这样的   用this作为参数传递给辅助线程   辅助线程中利用此指针调用Dialog的成员函数   这个函数是写数据库用的   主次线程里都用到   所以需要同步  
  但是同步能不能这么做   就是  
  void   CMainDlg::WriteData(...)  
  {  
      cs.Lock();  
            Open..   Write     Close   ...  
      cs.Unlock();  
  }

NO.1   作者: whoishere

这么做就可以了

NO.2   作者: vcforever

这么作没问题!  
  很正确!  
  最好在你写数据库的时候加上异常处理  
  void   CMainDlg::WriteData(...)  
  {  
      cs.Lock();  
            try{  
                  Open..   Write     Close   ...  
            }  
            catch(CDBExcept*   e){  
                  e->Delete();  
                  cs.UnLock();  
            }  
      cs.Unlock();  
  }  
  这样在异常发生的时候就不会造成死锁的问题了!  
 

NO.3   作者: xiaohyy

你的理解是正确的。。只要访问的是共享资源,记得Lock   ,Unlock..

NO.4   作者: rockersz

its   ok!

NO.5   作者: loafer

提个相关的建议:  
  临机区、互斥体、信号量等都是好东东,可以用来解决很多问题,但这些东西都比较消耗系统资源而且会使程序逻辑变得更复杂。我个人的经验和习惯是能不使用的时候尽量不要用,你上面的要求我觉得完全用不着用线程同步来解决。问题无非就是如何保证数据写入的安全性,如果能保证只在一个线程中操作就不会有问题,简单的方法可以通过PostMessage利用Windows的消息队列就可以比较简单安全的实现


 ·socket select()能否取得剩余时间    »显示摘要«
    摘要: 比如, tv.tv_sec = 10; tv.tv_usec = 0; 那么在第7秒的时间发生了一个读事件,我能否得到已经过去的时间或剩余的时间如3或7呢 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE