想实现的功能是这样子的:
程序a.exe的调用b.dll的一个函数,我把a。exe中的一个列表地址作用这个导出函数的参数,这样b.dll就能够使用这个列表对象。现在a和b中都在操作这个列表,a中有可能删除列表中的某一项,不知道怎么互斥。本来想把TRTLCriticalSection传过去,结果不行。
望高手指点下。

解决方案 »

  1.   

    你的问题有点奇怪,如果你的程序师单线程的,那么根本就涉及不到同时操作的问题。如果非要说是同时,只能说是exe和dll是乱序操作,也就是说,exe中某个函数操作了列表,完事后dll中某个函数又操作了列表,这种分时是可以通过函数的调用约定来控制操作顺序的。
    还有就是:dll和exe中都有窗体,并且窗体的事件响应中都涉及到操作列表,不过这看似同时的操作,其实也是分时的,某个事件响应函数没完事,绝对不会响应另外一个事件的。
    如果你的程序是多线程的,那才涉及的同步问题。在单线程中,像你说的,a在删除列表中的项,在没有完成删除之前,是不会有其他的函数能够操作这个列表的。不论操作列表的函数是在dll中还是exe中
      

  2.   

    可能你欠缺的不是互斥,而是通知机制,也就是说a删除了列表,删除完成之后,需要通知b,让b知道列表被删除了。
    如果是这样,在dll中引出一个回调函数就可以了,a删除了列表之后,调用一下回调函数。
    如果exe和dll都有窗体,那发消息通知也行