WaitForMultipleObjects()

Dann 2000-01-20 07:48:00
我写一个程序时,用CreateThread建了两个线程,再用CreateProcess调用另一个应用程序,然后我用了WaitForMultipleObjects等待两个线程的结束以便同步,程序运行后等待在WaitForMultipleObjects,CreateProcess函数也运行正确,但调用的程序却死活不运行,在中断了主进程后被调用的程序却有可能有运行了。
在我去掉WaitForMultipleObjects后,程序却运行的非常好。这是怎么回事?
...全文
260 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bobby 2000-01-31
  • 打赏
  • 举报
回复
这就是内容.
Dann 2000-01-30
  • 打赏
  • 举报
回复
算了算了,这个TMD程序发神经,一会儿可用一会儿就有出问题了。
谁要这分数?
netmare 2000-01-30
  • 打赏
  • 举报
回复
是呀,你那两个县城不结束,WaitForMultipleObjects当然不返回了.
olo 2000-01-21
  • 打赏
  • 举报
回复
听听
limodou 2000-01-21
  • 打赏
  • 举报
回复
用createprocess就应该可以了,不用createthread了吧。
solomon 2000-01-21
  • 打赏
  • 举报
回复
first: use WinExec instead of CreateProcess, if it works, you Source might
have some error.
second: What do you do in you two Thread, there maybe some block operation
in your Thread, which block the open Process not work.

The better way is send your source code up here.
kathywp 2000-01-21
  • 打赏
  • 举报
回复
没有明白,贴代码上来.
没有明白,贴代码上来.
没有明白,贴代码上来.
WHQ 2000-01-21
  • 打赏
  • 举报
回复
你的线程没有结束,WaitForMultipleObjects怎么返回呀,没有代码,也不知谁在等谁?
kxy 2000-01-20
  • 打赏
  • 举报
回复
没有明白,贴代码上来.
实验一 生产者-消费者模型模拟进程调度 一、实验任务 1、在WINDOWS 2000环境下,创建一个控制台进程,此进程包括4个线程:2个生产者线程和2个消费者线程。 2、用信号量机制解决进程(线程)的同步与互斥问题。 二、实验目的 1.掌握基本的同步互斥算法,理解生产者和消费者模型。 2.了解Windows 2000/XP中多线程的并发执行机制,线程间的同步和互斥。 3.学习使用Windows 2000/XP中基本的同步对象,掌握相应的API。 三、实验要求 1.生产者消费者对缓冲区进行互斥操作。 2.缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 3.生产者消费者各循环操作50次。 四、设计思路和采取的方案 1.利用windows提供的API函数CreateSemaphore()创建信号量对象; CreateThread()创建线程; WaitForSingleObject()执行P操作; ReleaseSemaphore()执行V操作; WaitForMultipleObjects()主进程等待线程的结束等函数进行设计。 2.在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex) 。 使用这些对象都分为三个步骤,一是创建或者初始化; 接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁;最后释放该同步对象,这对应于互斥量的解锁。这些同步对象在主进程中创建,在其子线程中都可。
图书馆登记和注销 要求:有一阅览室,读者进入时必须先在一张登记表上登记。该表中每个表项代表阅览室中的一个座位。读者离开时要消掉其登记信息。阅览室共有50 个座位。登记表每次仅允许一位读者进行登记或注销。 本实验由两个进程组成,分别是登陆和注销进程 使用到的函数和信号量 HANDLE mutex; HANDLE empty; HANDLE full; 创建信号量 HANDLE CreateSemaphore( __in_opt LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,// lpSemaphoreAttributes是信号量的安全属性 可为NULL __in LONG lInitialCount,// lInitialCount是初始化的信号量 __in LONG lMaximumCount,// lMaximumCount是允许信号量增加到最大值 __in_opt LPCWSTR lpName//lpName是信号量的名称 可为NULL ); 创建互斥信号量 HANDLE CreateMutex(  LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针 可为NULL  BOOL bInitialOwner, // 初始化互斥对象的所有者  LPCTSTR lpName // 指向互斥对象名的指针 ); 申请一个资源 WaitForSingleObject(HANDLE full,INFINITE); 释放资源 ReleaseSemaphore( __in HANDLE hSemaphore,// hSemaphore是要增加的信号量句柄 __in LONG lReleaseCount,// lReleaseCount是增加的计数。 __out_opt LPLONG lpPreviousCount//lpPreviousCount是增加前的数值返回。 ); 释放互斥信号量 BOOL ReleaseMutex(HANDLE hMutex); DWORD WaitForMultipleObjects( DWORD nCount, // number of handles in array CONST HANDLE *lpHandles, // object-handle array BOOL bWaitAll, // wait option DWORD dwMilliseconds // time-out interval );

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧