题目类似:
两个不同进程中的线程,A进程线程A1,B进程线程B1;线程A1从数据库读取多条记录写入缓存中,线程B1从缓存中读出数据然后处理.问题:如何保持两个线程同步(注意:是两个进程中的线程);如果A1线程读取数据后,B1线程进行处理,但B1线程没有处理完成,A1线程又开始读取数据了,怎样防止这样的事情发生?我开始的回答是在数据库表中设置状态位,让两个线程定时访问这个状态位,来达到同步.但是面试官说B1线程不能读数据库.所以,这道题没有答好.望高手指点.......

解决方案 »

  1.   


    WCF能实现2个进程中的通讯
    你说的这个不太清楚,有难度
      

  2.   

    这是生产者/消费者模式嘛.Windows下自然使用内核对象去同步咯.(具体用哪种要看情况而定)
    总体来说...这是很简单的同步.
      

  3.   

    使用Windows Message通讯可以的吧。
      

  4.   

    Mutex, Event, Semaphore都可以进行进程同步的
      

  5.   

    我记得Remoting里有个IPC协议就是两个进程间通信的
      

  6.   

    可以用 MSMQ 消息队列 来进行 远程 协作...你这是跨进程了..注意下 或者用Remoting技术,或者现在的 WCF 也可以用WS 线程方面 使用事件 WaitHandler 对象的派生类来做
      

  7.   

    Mutex确保只有一个线程访问某个资源或某段代码。可被用于防止一个程序的多个实例同时运行。EventWaitHandle允许线程等待直到它受到了另一个线程发出信号。volatile关键字 允许安全的非阻止在锁之外使用个别字段
      
      

  8.   

    Windows 操作系统允许信号量具有名称。命名信号量在整个系统范围都有效。即,创建命名信号量后,所有进程中的所有线程都是可见的。因此,命名信号量可用于同步进程的活动以及线程的活动。  Mutex就可以了,用一个命名的信号量 
      

  9.   

    我的想法,线程A1读了数据库后等待B1提交过来一个值,收到了就继续,没有就pause