多线程
来源:互联网 发布:急难先锋4优化 编辑:程序博客网 时间:2024/06/14 15:10
1、线程基本函数
//创建线程
HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,
SIZE_TdwStackSize,
LPTHREAD_START_ROUTINElpStartAddress,
LPVOIDlpParameter,
DWORDdwCreationFlags,
LPDWORDlpThreadId
);
//等待函数使线程进入等待状态,直到指定的内核对象被触发
DWORDWINAPIWaitForSingleObject(
HANDLEhHandle,
DWORDdwMilliseconds
);
//该函数用于创造一个独占资源
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD
BOOL bInitialOwner, // initial owner
LPCTSTR lpName // object name
);
互斥使用:
//MultiThread#include <iostream>#include <cstdlib>#include <windows.h>using namespace std;DWORD WINAPI Fun1Proc(LPVOID lpParameter); DWORD WINAPI Fun2Proc(LPVOID lpParameter);int tickets = 100;HANDLE hMutex;int main(){ hMutex = CreateMutex(NULL, FALSE, NULL); HANDLE hThread_1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL); HANDLE hThread_2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL); CloseHandle(hThread_1); CloseHandle(hThread_2); system("pause"); return 0; }DWORD WINAPI Fun1Proc(LPVOID lpParameter){ while (true) { WaitForSingleObject(hMutex, INFINITE); if (tickets > 0) { Sleep(10); cout << "Thread 1 sell ticket : "<<tickets--<<endl; } else break; ReleaseMutex(hMutex); } return 0; } DWORD WINAPI Fun2Proc(LPVOID lpParameter){ while (true) { WaitForSingleObject(hMutex, INFINITE); if (tickets > 0) { Sleep(10); cout << "Thread 2 sell ticket : "<<tickets--<<endl; } else break; ReleaseMutex(hMutex); } return 0; }
阅读全文
0 0
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 第8周项目1-建立顺序串的算法库
- Java 重写与重载的区别
- Spring Boot(二):快速搭建web项目或微服务
- ECMAScript 6 入门学习(6.函数的扩展)
- router1
- 多线程
- $.ajaxFileUpload is not a function
- charles ios https证书安装后不能抓包 unknown
- 微信小程序幻灯的swiper标签宽和高度自适应
- 【Leetcode】String to Integer (atoi)
- 第九周项目2
- The multi-part request contained parameter data (excluding uploaded files) that exceeded
- Android Studio 3.0全新时代:带来的一些新功能
- 介绍Windows侦测遍历Usb设备(PID&VID)及相应其插拔状态的方法