7月24日
来源:互联网 发布:linux怎么解压war包 编辑:程序博客网 时间:2024/05/01 20:14
线程练习
1.创建三个线程,线程1每隔1秒发送一个信号,奇数次线程2接收信号,偶数次线程3接收信号。
#include <Windows.h>DWORD WINAPI Thread1(LPVOID lpParam);DWORD WINAPI Thread2(LPVOID lpParam);DWORD WINAPI Thread3(LPVOID lpParam);HANDLE m_event,m_event2,m_event3;void _tmain(){DWORD dwthread1,dwthread2,dwthread3;m_event2 = CreateEvent(NULL,FALSE,TRUE,NULL);m_event3 = CreateEvent(NULL,FALSE,TRUE,NULL);CreateThread(NULL,0,Thread2,NULL,0,&dwthread2);CreateThread(NULL,0,Thread3,NULL,0,&dwthread3);CreateThread(NULL,0,Thread1,NULL,0,&dwthread1);while(1){}CloseHandle(m_event2);CloseHandle(m_event3);}DWORD WINAPI Thread1(LPVOID lpParam){int i;for (i = 0;i < 20;i++){if((i % 2) == 0){SetEvent(m_event2);}else{SetEvent(m_event3);}Sleep(1000);}return 0;}DWORD WINAPI Thread2(LPVOID lpParam){while(1){if(WaitForSingleObject(m_event2, INFINITE) == WAIT_OBJECT_0) {printf("this is the thread2\n");}}return 0;}DWORD WINAPI Thread3(LPVOID lpParam){while(1){if(WaitForSingleObject(m_event3, INFINITE) == WAIT_OBJECT_0) {printf("this is the thread3\n");}}return 0;}
2.创建两个线程,一个写线程,一个读线程,在写线程中奇数次和偶数次打印不同信息,没写一次,向读线程发出信号,读一次,读完后读线程再向写信号发出信号,在进行写,以此往复,一共执行20次。
#include <Windows.h>DWORD WINAPI writeThread(LPVOID lpParam);DWORD WINAPI readThread(LPVOID lpParam);HANDLE m_event,m_event2;typedef struct Data{char name[20];int age;}DATA;DATA data;void _tmain(){DWORD dwthread1,dwthread;m_event2 = CreateEvent(NULL,FALSE,TRUE,NULL);m_event = CreateEvent(NULL,FALSE,TRUE,NULL);CreateThread(NULL,0,writeThread,NULL,0,&dwthread);CreateThread(NULL,0,readThread,NULL,0,&dwthread1);while(1){}CloseHandle(m_event2);CloseHandle(m_event);}DWORD WINAPI writeThread(LPVOID lpParam){int i ;for (i = 0;i < 20;i++){if(WaitForSingleObject(m_event, INFINITE) == WAIT_OBJECT_0) {if ((i % 2) == 0){strcpy(data.name,"kiwin");data.age = 20;}else{strcpy(data.name,"susan");data.age = 22;}}SetEvent(m_event2);}return 0;}DWORD WINAPI readThread(LPVOID lpParam){for(int i =0;i<20;i++){if(WaitForSingleObject(m_event2, INFINITE) == WAIT_OBJECT_0) {printf("name is %s\n",data.name);printf("age is %d\n",data.age);}SetEvent(m_event);}return 0;}
- 7月24日
- 7月24日 vb
- 搬家(7月24日 11:36)
- 7月24日—素质拓展
- 2013年7月24日
- 暑假第十八天,7月24日
- 2015年7月24日笔记
- 2016年7月24日完成任务
- 7月24日--JavaScript基础(1)
- 7月24日考试总结
- 12月24日
- 8月24日。
- 6月24日
- 10月24日
- 8月24日
- 9月24日
- 8月24日
- 9月24日
- Slave_SQL_Running: No mysql同步故障解决方法
- Windows Socket编程之HelloWorld
- hdu 4607——Park Visit(暑假第一次多校)
- 字符串相似度(距离)
- 4.7 Proxy代理模式
- 7月24日
- spring+hibernate架构中Dao访问数据库的几种方法
- 程序员技术练级攻略
- linkflags += -Wl
- thread
- HDU2491 贪心
- How can I capture raw 802.11 frames, including non-data (management, beacon) frames?
- 静态链接(续)
- hdu1010(深搜 +剪枝)