`

线程互斥共享资源

    博客分类:
  • C++
阅读更多
#include <windows.h>
#include <iostream.h>
DWORD WINAPI ThreadProc1(LPVOID lpParameter);
DWORD WINAPI ThreadProc2(LPVOID lpParameter);
int tickets=100;
HANDLE hMutex;
void main(){
	HANDLE handle1;	
	HANDLE handle2;

	handle1=CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
	handle2=CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);
	CloseHandle(handle1);
	CloseHandle(handle2);
	hMutex=CreateMutex(NULL,false,NULL);
	Sleep(4000);
	//CloseHandle(hMutex);
}

DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
	while(true){
		WaitForSingleObject(hMutex,INFINITE);
		if (tickets>0)
		{
			cout<<"Thread1 sell:"<<tickets--<<endl;
		} 
		else
		{
			break;
		}
		ReleaseMutex(hMutex);
	}
	return 0;
}

DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
	while(tickets>0){
		WaitForSingleObject(hMutex,INFINITE);
		if (tickets>0)
		{
			cout<<"Thread2 sell:"<<tickets--<<endl;
		} 
		else
		{
			break;
		}
		ReleaseMutex(hMutex);
	}
	return 0;
}

/*
	HANDLE hMutex;
	//在主线程创建互斥对象
	hMutex=CreateMutex(NULL,false,NULL);
	//在分线程里请求互斥对象
	WaitForSingleObject(hMutex,INFINITE);
	//在分线程里释放互斥对象
	ReleaseMutex(hMutex);
*/
分享到:
评论

相关推荐

    linux上实现多进程和多线程实现同步互斥(源代码)

    在linux上分别用多进程和多线程实现的同步互斥操作(源代码)

    操作系统中对于线程的同步与互斥问题的设计原理及代码

    线程间的互斥:并发执行的线程共享某些类临界资源,对临界资源的访问应当采取互斥的机制。 线程间的同步:并发执行的线程间通常存在相互制约的关系,线程必须遵循一定的规则来执行,同步机制可以协调相互制约的关系...

    线程同步,互斥锁

    一个简单的c++多线程,简单的用了互斥锁,控制线程的同步问题

    线程同步的四种详细使用方法--临界区、互斥量、事件等

    互斥量的使用可以防止多个线程同时访问同一个共享资源,从而避免了数据混淆和资源竞争。互斥量可以用 CreateMutex()函数创建,并用 WaitForSingleObject()函数等待互斥量的释放。 事件(Event)是第三种常用的...

    Linux 线程间同步机制

    互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁绑定后,对该共享资源的访问如下操作: (1)在访问该资源前,首先申请该互斥锁,如果该互斥处于开锁状态,则申请到该...

    Linux C 多线程编程之互斥锁与条件变量实例详解

    互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_...

    条件变量交替控制多线程共享资源

    适合linux-c网络编程初学者学习的多线程控制,linux下编译通过,通过互斥锁和条件变量,最终线程的运行结果输出到txt文件中。

    浅谈Python线程的同步互斥与死锁

    共享资源:多个进程或者线程都可以操作的资源称为共享资源。对共享资源的操作代码段称为临界区。 影响 : 对共享资源的无序操作可能会带来数据的混乱,或者操作错误。此时往往需要同步互斥机制协调操作顺序。  3. ...

    linux之线程同步一.doc

    在Linux中,线程同步是一种控制多个线程之间访问共享资源的方式,以确保在任何时候只有一个线程能够访问某个资源。这可以通过多种方式实现,包括互斥锁(mutexes)、信号量(semaphores)、条件变量(condition ...

    C#多线程中如何运用互斥锁Mutex

    互斥锁可适用于一个共享资源每次只能被一个线程访问的情况  函数: //创建一个处于未获取状态的互斥锁 Public Mutex(); //如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 Public ...

    VisualStudio多线程共享资源加锁WindowsAPI封装类

    critical section是每个线程中访问临界资源的那段代码,不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。

    操作系统实验临界区的互斥访问

    详细步骤,有界面提示,当多个线程访问一个独占性共享资源时,可以使用“临界区”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被...

    多线程编程中关键的一步是保护所有的共享资源,

    多线程编程中关键的一步是保护所有的共享资源,工具主要有互锁函数、临界段和互斥体等;另一个实质性部分是协调线程使其完成应用程序的任务,为此,可利用内核中的事件对象和信号。 在进程内或进程间实现线程同步的...

    1inux操作系统中互斥与同步控制.pdf

    线程互斥是为了避免线程对临界资源的同时使用,从而避免因此而产生的不可预料的后果。临界资源是那些一次只能被一个线程使用的资源,在计算机系统中有很多软硬件资源都属于临界资源,如变量、堆栈、链表、队列、...

    linux线程同步.pdf

    线程安全意味着当多个线程访问共享资源时,程序的行为是可预测的,不会出现不一致或错误的结果。线程同步可以防止数据竞争、避免死锁和饥饿等问题。数据竞争是指两个或多个线程同时访问同一个共享资源,并且至少有一...

    Linux线程同步之互斥量(mutex)

     互斥量,从字面上可以知道是相互排斥的意思,它是基本的同步工具,用于保护临界区(共享资源),以保证在任何时刻只有一个线程能够访问共享的资源。  互斥量类型声明为pthread_mutex_t数据类型,在中有具体的...

    Java多线程与并发库高级应用视频教程22集

    Java多线程与并发库高级应用视频教程22集资源目录:【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程范围内共享...

    Linux下基于多线程的服务器程序设计.pdf

    互斥锁是一种同步机制,用于保护共享资源免受多个线程的同时访问。Linux 提供了多种互斥锁机制,包括信号量、互斥锁、条件变量等。 在设计多线程服务器程序时,还需要考虑线程的调度问题。线程的调度是指操作系统将...

    110104010104.rar_MFC多任务_MFC多线程挂起_mfc 多线程_mfc 生产者

    互斥体与临界区很相似,但是使用时相对复杂一些,它不仅可以在同一应用程序的线程间实现同步,还可以在不同的进程间实现同步,从而实现资源的安全共享。 信号量 信号量是一个在一定范围内变化的整形数据,用来表示...

Global site tag (gtag.js) - Google Analytics