多线程编程
2015-06-08 23:14
316 查看
编写的多线程程序,是根据孙鑫的视频讲解写的,这个代码重点在于线程同步,需要注意的是线程的时间片的划分,如果主线程的时间片一直在运行的话,程序是不会进入子线程的。
// MultiThread.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<windows.h> #include<iostream> using namespace std; DWORD WINAPI Thread1(LPVOID lpParamenter); DWORD WINAPI Thread2(LPVOID lpParamenter); int ticket = 100; HANDLE hMutex; int main(int argc, _TCHAR* argv[]) { HANDLE hThread1, hThread2; hThread1 = CreateThread(NULL, 0, Thread1, NULL, 0, NULL); hThread2 = CreateThread(NULL, 0, Thread2, NULL, 0, NULL); CloseHandle(hThread1); CloseHandle(hThread2); hMutex=CreateMutex(NULL,false,NULL); Sleep(1000); return 0; } DWORD WINAPI Thread1(LPVOID lpParamenter) { while (true) { WaitForSingleObject(hMutex, INFINITE); if (ticket > 0) { Sleep(1); cout << "Thread1 sell ticket:" << ticket-- << endl; } else { break; } ReleaseMutex(hMutex); } return 0; } DWORD WINAPI Thread2(LPVOID lpParamenter) { while (true) { WaitForSingleObject(hMutex, INFINITE); if (ticket > 0) { Sleep(1); cout << "Thread2 sell ticket:" << ticket-- << endl; } else { break; } ReleaseMutex(hMutex); } return 0; }
相关文章推荐
- 2015届华为校园招聘机试题 java实现
- 下拉列表框Spinner-采用javabean作为Adapter元素
- java开发中遇到的问题:rt.jar访问限制
- jdk1.7官方下载地址(全部)
- Yii2的Web控制器文件分析(yii\web\Controller.php)
- 关于Qt在子线程中使用QMessageBox的折衷方法
- DNX/ASP.NET 5的xUnit入门向导
- C#超级实用的一种类型—匿名类型
- java_类排序模板(类似于C++结构体)
- 【Substring with Concatenation of All Words】cpp
- leetcode--Search a 2D Matrix
- spring总结
- DBUS 的 C 编程接口与配置
- C# 中 async/await 调用传统 Begin/End 异步方法
- Yii2基类控制器文件分析(yii\base\Controller.php)创建动作执行动作
- HBase在win7下eclipse中Java实现对表的操作报错解决
- 什么才算是真正的编程能力?
- 什么才算是真正的编程能力?
- Java观察者模式
- Java-希尔排序