您的位置:程序门 -> vc/mfc -> 进程/线程/dll



多线程 事件激发问题.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


多线程 事件激发问题.[已结贴,结贴人:truelove7283159]
发表于:2007-12-07 10:39:57 楼主
我想实现这样一个功能不知道vc里面有没有,或者说怎么在vc里面实现.

我有一个事件或者说一个信号,flag等)改变或者激发,   我希望其他进程,进程里面的一个线程,或者进程中的多个、全部线程都可以响应这个事件。   但是我事件激发的地方,并不知道有多少个进程或者线程和自己关联,也许一个都没有,并且我这些线程、进程都没有窗口。


发表于:2007-12-07 10:55:201楼 得分:85
在windows下你可以使用来创建一个事件。如果你为这个事件指定名字,那么如果操作系统中没有同样名字事件的话,会创建一个有名字的事件,否则会返回一个现存事件的句柄。你也可以用openevent来访问一个现存的事件。关于事件的触发和响应,参考
发表于:2007-12-07 11:00:452楼 得分:4
事件应该是进程内有效的,其它进程访问不到,应该使用互斥对象。
createmutex

发表于:2007-12-07 11:01:163楼 得分:2
进来拜拜牛人。
发表于:2007-12-07 11:01:584楼 得分:2
猛!
发表于:2007-12-07 11:17:285楼 得分:2
第一次看到宝石,好歹也根根,不过楼主的问题很难让人明白,看来还得使劲学。
发表于:2007-12-07 11:21:346楼 得分:5
用互斥量或者信号量。
如果使用互斥量,主进程创建互斥量时同时拥有,当需要激发信号时释放互斥量。其它进程的线程应该不停使用waitfor...函数去测试能否得到互斥量,如果得到了就响应事件,然后释放让别的进程线程有机会响应事件。
如果使用信号量,主进程创建信号量时指定初始计数等于最大计数(比如都是30),当需要激发信号时释放信号量(releasesemaphore(handle,30,null)),其它进程使用waitfor...尝试获得该信号量,然后响应事件,最多可以让30个线程同时响应。
发表于:2007-12-07 15:13:467楼 得分:0
哈哈,盲目崇拜啊。明明老蒋没看清题目,回答得也不合适,偏偏能得最多分。
发表于:2007-12-12 19:30:208楼 得分:0
我回答你吧   jameshooo   :互斥量我考虑过了,和event差不多。
1.   不过你说激发的时候释放互斥量,我不想那么做,我可以在别的线程、进程去open这个互斥量的,打开就是有互斥量。  
2.   信号量我没考虑根据你的提示,需要知道有多少个数目,我再激发的时候根本不知道有多少关联存在,也许0,10,100,这些关联也不会和我主动通信。
        (类似你关机的时候,系统会和你机器上的所有顶层窗口发一个wm_close消息,各个窗口在接到这个消息以后再进行自己的处理,这个只是举例,不探讨这个消息,那你可以把这个消息看成是我题目中的事件、标志位)。
3.     event   是个handle别的程序的确可以使用openevent来打开这个event,这个方法也和我当初设想的差不多。


快速检索

最新资讯
热门点击