`
ackerman
  • 浏览: 72710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux编程-多线程、同步和互斥(转载)

 
阅读更多

http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int g_Flag=0;

static pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond=PTHREAD_COND_INITIALIZER;


void * thread1(void *arg)
{
	printf("%s\n","this is thread1");
	pthread_mutex_lock(&mutex);
	if(g_Flag==2)
		pthread_cond_signal(&cond);
	g_Flag=1;
	pthread_mutex_unlock(&mutex);
	pthread_join(*(pthread_t*)arg,NULL);
	printf("%s\n","exit thread1");
	pthread_exit(0);
}
void *thread2(void *arg)
{
	printf("%s\n","this is thread2");
	pthread_mutex_lock(&mutex);
	if(g_Flag==1)
		pthread_cond_signal(&cond);
	g_Flag=2;
	pthread_mutex_unlock(&mutex);
	printf("%s\n","exit thread2");
	pthread_exit(0);
}
int main()
{
	pthread_t tid1, tid2;
	int rc1=0,rc2=0;
	rc2=pthread_create(&tid2,NULL,thread2,NULL);
	if(rc2!=0)
		printf("thread2 error.\n");
	rc1=pthread_create(&tid1,NULL,thread1,&tid2);
	if(rc1!=0)
		printf("thread1 error.\n");
	pthread_cond_wait(&cond, &mutex);
	return 0;
}

 
分享到:
评论

相关推荐

    Linux下多线程及多进程及同步与互斥编程详细介绍

    Linux下多线程及多进程及同步与互斥编程详细介绍

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

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

    Linux系统编程之线程同步

    所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时候使用该机制。但,并没有强制限定。 因此,即使有了mutex,如果有线程不按规则来访问数据,依然会造成...

    实验二、嵌入式Linux多线程编程实验

    2. 掌握如何利用信号量完成线程间的同步与互斥。 3. 熟悉Makefile工作原理,掌握编写Makefile的编写方法。 二、实验基本要求 1. 掌握熟悉线程的定义及操作方法。 2. 利用信号量的PV操作完成完成以下单个生产者和单个...

    Linux操作系统编程(linux多线程的互斥与同步控制及实践)

    Linux操作系统编程,主要提供高级编程技术及实践方面内容。主要侧重多线程互斥与同步控制程序设计、调试等。部分代码练习。

    linux网络编程-宋敬彬-part3

    第2章 Linux编程环境 14 2.1 Linux环境下的编辑器 14 2.1.1 vim使用简介 14 2.1.2 使用vim建立文件 15 2.1.3 使用vim编辑文本 16 2.1.4 vim的格式设置 18 2.1.5 vim配置文件.vimrc 19 2.1.6 使用其他...

    linux网络编程-宋敬彬-part2

    第2章 Linux编程环境 14 2.1 Linux环境下的编辑器 14 2.1.1 vim使用简介 14 2.1.2 使用vim建立文件 15 2.1.3 使用vim编辑文本 16 2.1.4 vim的格式设置 18 2.1.5 vim配置文件.vimrc 19 2.1.6 使用其他...

    Linux下多线程编程的互斥与同步

    互斥锁只有0,1两中状态,适合于线程对共享资源的独占访问,很多时候每个资源可以同时被有限的线程访问,此时互斥锁将无法满足;条件变量同步也同样存在这种问题。信号量实际是一种非负整型计数器,可以很好的控制...

    基于linux的多线程编程

    在linux下实现了通过互斥信号量实现同步,这个实验模拟了生产者消费者问题

    linux网络编程-宋敬彬-part1

    第2章 Linux编程环境 14 2.1 Linux环境下的编辑器 14 2.1.1 vim使用简介 14 2.1.2 使用vim建立文件 15 2.1.3 使用vim编辑文本 16 2.1.4 vim的格式设置 18 2.1.5 vim配置文件.vimrc 19 2.1.6 使用其他...

    linux系统多线程编程

    掌握Linux中线程的基本概念 掌握Linux中线程的创建及使用 掌握Linux中线程属性的设置 能够独立编写多线程程序 能够处理多线程中的同步与互斥问题

    producer-customer.c文件

    利用信号量实现的多线程之间的同步与互斥,详情看博客文章Linux多线程编程(二)---线程之间的同步与互斥进阶实验

    Linux网络编程 视频 教程

    Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧...

    详解Linux多线程编程(不限Linux)

    还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题: 是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能: 1)有一int型全局变量g_Flag...

    实验二、嵌入式Linux多线程编程实

    2. 掌握如何利用信号量完成线程间的同步与互斥。 3. 熟悉Makefile工作原理,掌握编写Makefile的编写方法。 二、实验基本要求 1. 掌握熟悉线程的定义及操作方法。 2. 利用信号量的PV操作完成完成以下单个生产者和单个...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    C++教程网《Linux网络编程》视频百度云地址

    Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧...

    实验5--Linux-高级程序设计.doc

    (2) 编写一个多线程程序(pthread),实现2程同步互斥 #include &lt;stdio.h&gt; #include &lt;pthread.h&gt; #define BUFFER_SIZE 16 struct prodcons { // 缓冲区相关数据结构 int buffer[BUFFER_SIZE]; pthread_mutex_t lock...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧...

    Linux多线程编程技术在掷骰子游戏模拟程序中的应用

    为了模拟概率事件,针对掷骰子游戏规则,应用Linux系统下C语言多线程机制以及多个二值信号量以实现多个线程间循环同步。通过伪随机数模拟掷骰子的点数,设计并实现了一个基于多线程方式模拟4人掷骰子游戏程序,并对1 ...

Global site tag (gtag.js) - Google Analytics