#include <stdio.h>
#include <numeric>
#include <vector>
#include <string>
#include <map>
#include "iostream"
#include "windows.h"
using namespace std;
CRITICAL_SECTION g_cs;
int tickets=100;
DWORD WINAPI Fun1
(LPVOID lparameter);
DWORD WINAPI Fun2
(LPVOID lparameter);
int main(int argc, char* argv[])
{
HANDLE hthread1=CreateThread(NULL,0,Fun1,NULL,0,NULL);
HANDLE hthread2=CreateThread(NULL,0,Fun2,NULL,0,NULL);
CloseHandle(hthread1);
CloseHandle(hthread2);
//initialize the critical section
InitializeCriticalSection(&g_cs);
Sleep(1000);
// delete the critical section
DeleteCriticalSection(&g_cs);
return 0;
}
DWORD WINAPI Fun1
(LPVOID lparameter)
{
while (true)
{
Sleep(1);
EnterCriticalSection(&g_cs);
if (tickets>0)
{
cout<<"thread 1 is running "<<tickets--<<endl;
}
else
break;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI Fun2
(LPVOID lparameter)
{
while (true)
{
Sleep(1);
EnterCriticalSection(&g_cs);
if (tickets>0)
{
cout<<"thread 2 is running "<<tickets--<<endl;
}
else
{
break;
}
LeaveCriticalSection(&g_cs);
}
return 0;
}
分享到:
相关推荐
VC下线程同步的三种方法(互斥、事件、临界区)简单的代码,让你更容易理解三种同步方式。
windows下的多线程锁机制
该文档包括win32中关于进程和线程的API函数,主要归纳了Windows下线程同步的6种技术。
windows下threadpool的实现 ( C++ ) 1. Task对于参数的变化参考了loki的typelist的做法,可支持0 - 9个参数的函数对象。 2. task.h使用脚本自动生成(taskGen.py) 3. scheduler.h用于解耦thread_pool和task_thread...
该代码演示了线程互斥的框架代码,编译环境VC++6.0
介绍了linux线程同步的所有方式,包括互斥、自旋、信号量、条件变量等技术
Linux下线程简单使用
Linux下线程池的C语言实现,可以稍微参考一下。
linux下查看java进程下线程占用cpu情况
Linux下线程和锁的实验代码 代码演示了在LINUX下创建线程并互斥的访问临界资源
【ASP.NET编程知识】.net core并发下线程安全问题详解.docx
该文件主要是在MFC上处理线程的源码,该文件主要是在MFC上处理线程的源码,该文件主要是在MFC上处理线程的源码,
线程池源代码,全部封装好接口,只需一步创建,一步添加任务。有相应demo参考
vc下线程同步 视频解析 包括源码 希望大家喜欢
linux下面很有的线程库例程,稍加改动可以适用于多并发机制的应用。里面包含了tcp并发的实例应用
singleton是最常见的设计模式,但是要设计好却是不容易,尤其是多线程的时候,需要考虑线程安全的问题.
在vc下,创建线程,并执行线程,简单的线程实例,初学者适用
singleton是最常见的设计模式,但是要设计好却是不容易,尤其是多线程的时候,需要考虑线程安全的问题.
这是一个在linux下实现的线程池,利用了C++的模板,可以很容易复用,实现自己的功能开发。