b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

windows c多线程_windows 多线程面试题_java多线程面试题编程(13)

电脑杂谈  发布时间:2017-02-21 22:25:22  来源:网络整理

下面写二个程序来验证下:

第一个程序创建互斥量并等待用户输入后就触发互斥量。第二个程序先打开互斥量,成功后就等待并根据等待结果作相应的输出。详见代码:

第一个程序:

#include<stdio.h>

#include<conio.h>

#include<windows.h>

constcharMUTEX_NAME[]="Mutex_MoreWindows";

intmain()

{

HANDLEhMutex=CreateMutex(NULL,TRUE,MUTEX_NAME);//创建互斥量

printf("互斥量已经创建,现在按任意键触发互斥量\n");

getch();

//exit(0);

ReleaseMutex(hMutex);

printf("互斥量已经触发\n");

CloseHandle(hMutex);

return0;

}

第二个程序:

#include<stdio.h>

#include<windows.h>

constcharMUTEX_NAME[]="Mutex_MoreWindows";

intmain()

{

HANDLEhMutex=OpenMutex(MUTEX_ALL_ACCESS,TRUE,MUTEX_NAME);//打开互斥量

if(hMutex==NULL)

{

printf("打开互斥量失败\n");

return0;

}

printf("等待中....\n");

DWORDdwResult=WaitForSingleObject(hMutex,20*1000);//等待互斥量被触发

switch(dwResult)

{

caseWAIT_ABANDONED:

printf("拥有互斥量的进程意外终止\n");

break;

caseWAIT_OECT_0:

printf("已经收到信号\n");

break;

caseWAIT_TIMEOUT:

printf("信号未在规定的时间内送到\n");

break;

}

CloseHandle(hMutex);

return0;

}

运用这二个程序时要先启动程序一再启动程序二。下面展示部分输出结果:

结果一.二个进程顺利执行完毕:

结果二.将程序一中//exit(0);前面的注释符号去掉,这样程序一在触发互斥量之前就会因为执行exit(0);语句而且退出,程序二会收到WAIT_ABANDONED消息并输出“拥有互斥量的进程意外终止”:

有这个对“遗弃”问题的处理,在多进程中的线程同步也可以放心的使用互斥量。

最后总结下互斥量Mutex:

1.互斥量是内核对象,它与关键段都有“线程所有权”所以不能用于线程的同步。

2.互斥量能够用于多个进程之间线程互斥问题,并且能完美的解决某进程意外终止所造成的“遗弃”问题。

秒杀多线程第八篇 经典线程同步 信号量Semaphore

前面介绍了关键段CS、事件Event、互斥量Mutex在经典线程同步问题中的使用。本篇介绍用信号量Semaphore来解决这个问题。

首先也来看看如何使用信号量,信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。

第一个CreateSemaphore

函数功能:创建信号量

函数原型:

HANDLECreateSemaphore(

LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,

LONGlInitialCount,

LONGlMaximumCount,


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33747-13.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...