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

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

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

代码如下:

//使用PluseEvent()函数

#include<stdio.h>

#include<conio.h>

#include<process.h>

#include<windows.h>

HANDLEg_hThreadEvent;

//快线程

unsignedint__stdcallFastThreadFun(void*pPM)

{

Sleep(10);//用这个来保证各线程调用等待函数的次序有一定的随机性

printf("%s启动\n",(PSTR)pPM);

WaitForSingleObject(g_hThreadEvent,INFINITE);

printf("%s等到事件被触发顺利结束\n",(PSTR)pPM);

return0;

}

//慢线程

unsignedint__stdcallSlowThreadFun(void*pPM)

{

Sleep(100);

printf("%s启动\n",(PSTR)pPM);

WaitForSingleObject(g_hThreadEvent,INFINITE);

printf("%s等到事件被触发顺利结束\n",(PSTR)pPM);

return0;

}

intmain()

{

printf("使用PluseEvent()函数\n");

printf("--byMoreWindows()--\n\n");

BOOLbManualReset=FALSE;

//创建事件第二个参数手动置位TRUE,自动置位FALSE

g_hThreadEvent=CreateEvent(NULL,bManualReset,FALSE,NULL);

if(bManualReset==TRUE)

printf("当前使用手动置位事件\n");

else

printf("当前使用自动置位事件\n");

charszFastThreadName[5][30]={"快线程1000","快线程1001","快线程1002","快线程1003","快线程1004"};

charszSlowThreadName[2][30]={"慢线程196","慢线程197"};

inti;

for(i=0;i<5;i++)

_beginthreadex(NULL,0,FastThreadFun,szFastThreadName[i],0,NULL);

for(i=0;i<2;i++)

_beginthreadex(NULL,0,SlowThreadFun,szSlowThreadName[i],0,NULL);

Sleep(50);//保证快线程已经全部启动

printf("现在主线程触发一个事件脉冲-PulseEvent()\n");

PulseEvent(g_hThreadEvent);//调用PulseEvent()就相当于同时调用下面二句

//SetEvent(g_hThreadEvent);

//ResetEvent(g_hThreadEvent);

Sleep(3000);

printf("时间到,主线程结束运行\n");

CloseHandle(g_hThreadEvent);

return0;

}

对自动置位事件,运行结果如下:

对手动置位事件,运行结果如下:

最后总结下事件Event

1.事件是内核对象,事件分为手动置位事件和自动置位事件。事件Event内部它包含一个使用计数(所有内核对象都有),一个布尔值表示是手动置位事件还是自动置位事件,另一个布尔值用来表示事件有无触发。


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

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

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