`
mylove2060
  • 浏览: 338724 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

windows下线程同步

阅读更多
#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;
}
分享到:
评论

相关推荐

    windows下线程锁

    为了解决这个问题,Windows提供了一系列的线程同步机制,其中包括“线程锁”,也就是我们常说的互斥量(Mutex)。 线程锁,或互斥量,是一种同步对象,它允许同一时间只有一个线程访问被保护的资源。当一个线程获得...

    Windows下线程互斥过程代码 环境vc6.0

    线程互斥是一种同步机制,确保同一时间只有一个线程可以访问共享资源,以避免数据竞争和不一致的状态。在Windows API中,我们可以通过创建和操作Mutex对象来实现这一功能。Mutex有两个主要的API函数:`CreateMutex()...

    MFC下线程使用源码

    MFC提供了对Windows API线程功能的封装,使得开发者可以更加方便地创建和管理线程。下面我们将深入探讨MFC下线程的使用及相关知识点。 1. **线程创建**: 在MFC中,创建线程主要有两种方式:通过`CWinThread`派生...

    简单的vc下线程实例

    线程在VC++中的实现主要依赖于Windows API,尤其是`CreateThread`函数。这个函数允许开发者创建一个新的线程来执行特定的任务。下面我们将深入探讨如何在VC++中创建和管理线程。 首先,你需要包含必要的头文件,如`...

    利用多线程实现哲学家就餐.pdf

    在多线程编程中,实现一个无死锁的哲学家就餐问题是一个经典的同步问题,用来模拟进程之间的资源分配与互斥访问。...- POSIX与Windows下线程编程的不同API - 操作系统中资源分配与线程调度的基本知识

    完全由 C# 语言编写的 QQ机器人插件 SDK.zip

    QQ机器人通常基于事件驱动编程模型,即当接收到特定的消息或事件(如用户上线、下线、发送消息等)时,机器人会触发相应的事件处理器来执行相应操作。这需要开发者熟悉C#中的事件和委托概念。 5. **异步编程**: ...

    异步套接字聊天室程序实现

    异步套接字(Asynchronous Socket)是Windows API提供的一种网络编程模型,它允许应用程序在不阻塞主线程的情况下进行网络通信。相比于同步套接字,异步套接字可以极大地提高系统的并发性和响应性,特别是在处理大量...

    J2EE面试题集(java面试宝典)

    #### 二、Linux 下线程与 GDI 类解释 - **Linux 下的线程模型**: - Linux 实现的是基于内核轻量级进程(Kernel Thread)的“一对一”线程模型,即每个线程实体都对应一个内核线程。这种模型的优点在于线程间的...

Global site tag (gtag.js) - Google Analytics