`
mylove2060
  • 浏览: 335856 次
  • 性别: 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;
}
分享到:
评论

相关推荐

    VC下线程同步的三种方法

    VC下线程同步的三种方法(互斥、事件、临界区)简单的代码,让你更容易理解三种同步方式。

    windows下线程锁

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

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

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

    Windows下线程池的实现(C++)

    windows下threadpool的实现 ( C++ ) 1. Task对于参数的变化参考了loki的typelist的做法,可支持0 - 9个参数的函数对象。 2. task.h使用脚本自动生成(taskGen.py) 3. scheduler.h用于解耦thread_pool和task_thread...

    MFC下线程使用源码

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

    linux下线程池源代码

    总结来说,这份"linux下线程池源代码"是一个实用的并发编程工具,它涉及到了多线程、同步机制和线程池管理等多个核心概念。通过深入研究,开发者不仅可以掌握线程池的使用,还能深化对Linux多线程编程的理解,为实际...

    Linux下线程池的C语言实现

    在深入探讨Linux下线程池的C语言实现之前,我们首先需要理解线程池的基本概念以及它在系统设计中的重要性。线程池是一种管理线程的机制,它预先创建一组固定数量的线程,等待任务的到来,从而避免了频繁创建和销毁...

    Linux下线程和锁的实验代码

    Linux下线程和锁的实验代码 代码演示了在LINUX下创建线程并互斥的访问临界资源

    Linux下线程简单使用

    本篇将详细介绍在Linux环境下,如何使用C++进行线程的创建、同步以及销毁等基本操作。 一、线程创建 在C++11及以后的版本中,C++标准库提供了一个名为`std::thread`的类来支持线程操作。创建一个新线程可以使用`std...

    简单的vc下线程实例

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

    linux 下线程库的使用

    7. **主线程**:主线程继续等待新的连接,直到服务需要停止时,关闭服务器套接字,等待所有工作线程结束。 示例中的"tcplibthreadpool"可能包含了一个使用pthread库和TCP网络编程实现的线程池模型。线程池是一种...

    linux下线程池的C++模板实现

    4. **同步机制**:如互斥量(`std::mutex`)、条件变量(`std::condition_variable`)等,用于保证线程间的正确同步,防止数据竞争。 在实际使用时,用户首先需要定义自己的任务类型,这个类型需要有一个无参构造...

    linux下线程安全的singleton模板

    这种方法确保了只有一次实例化,并且避免了不必要的同步开销。 ```cpp class Singleton { private: Singleton() {} ~Singleton() {} static std::mutex mtx; static Singleton* instance; public: static ...

    linux 下线程安全的singleton

    singleton是最常见的设计模式,但是要设计好却是不容易,尤其是多线程的时候,需要考虑线程安全的问题.

    多线程机制探索在NET下线程开发下载

    本文将深入探讨.NET下的多线程开发,包括线程的创建、同步与通信、线程优先级以及线程安全。 一、线程创建 在.NET中,可以使用`System.Threading.Thread`类来创建新的线程。通过实例化Thread类并传递一个委托(如:...

    基于zookeeper 监控dubbo provider 下线,提供dubbo 服务下线 邮箱预警

    本项目结合两者,实现了一个针对`Dubbo`服务提供者(`Provider`)下线的监控系统,并提供了邮件预警功能,确保系统能够及时发现并处理服务异常情况,减少因服务不可用导致的业务中断。 1. **Zookeeper在Dubbo中的作用...

    Delphi下线程控件BMDThread (支持D5-D12)

    BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的创建、管理线程。含Demo

    易语言恶搞QQ下线

    这个“易语言恶搞QQ下线”项目,从标题和描述来看,主要是利用易语言编写的一个程序,其功能可能是发送某种指令或消息,使得目标QQ账号被迫下线,这在编程领域被称为一种恶作剧或黑客行为。 首先,我们要明确,这种...

Global site tag (gtag.js) - Google Analytics