`
ackerman
  • 浏览: 75015 次
  • 性别: 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下多线程及多进程及同步与互斥编程详细介绍

    多线程编程和操作系统线程同步互斥演示

    在这个“多线程编程和操作系统线程同步互斥演示”中,作者可能创建了一个或多个人工场景,展示了如何在VC++环境中使用多线程,并且演示了线程同步和互斥的实践应用。这可能涉及到以下几个方面: 1. **线程创建**:...

    Linux编程手册-多线程-详细资料.rar

    在《Linux编程手册-多线程-详细资料》中,我们深入探讨了这个主题,旨在帮助无论是初学者还是有经验的程序员都能更好地理解和运用Linux环境下的多线程技术。 首先,多线程基础介绍部分讲解了线程的概念,它是操作...

    Linux编程技术-实验4 多线程编程.doc

    本实验报告的主要内容是关于Linux多线程编程的技术实验,实验目的主要是掌握线程的概念及基本操作方法,掌握线程间同步互斥基本原理,并能够利用互斥锁进行线程间同步操作。 一、实验目的: 1. 掌握线程的概念及...

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

    在深入讨论Linux操作系统编程,特别是多线程的互斥与同步控制及实践之前,首先需要了解Linux操作系统的基本概念以及多线程编程的基础知识。Linux是一种类Unix的操作系统,它支持多用户、多任务、多线程和多种硬件...

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

    在实验过程中,学生不仅需要掌握多线程编程的理论知识,还要具备实际编程和调试能力,通过实际操作加深对线程同步和互斥、信号量机制的理解,以及Makefile的编写和使用。这对于提升嵌入式系统的开发和维护技能至关...

    Linux下C语言多线程编程实例

    pthread 库是 Linux 下多线程编程的核心库,提供了丰富的函数和变量来控制线程的创建、执行和同步。 在本实例中,我们将创建两个线程来实现对一个数的递加。这个实例可以帮助我们更好地理解多线程编程的基本概念和...

    Linux下C语言编程--线程操作

    除了上述基本操作外,线程还涉及到一些高级特性,如线程属性设置、线程同步和互斥等。这些特性对于开发高质量、高性能的应用程序至关重要。 1. **线程属性**:可以通过`pthread_attr_t`结构体来设置线程的各种属性...

    Linux系统下的多线程编程入门.pdf

    本文将深入探讨Linux环境中的多线程概念、创建与管理线程的方法、线程同步与通信机制,以及多线程编程中可能遇到的问题和解决策略。 一、多线程概念 多线程是指在一个进程中可以同时执行多个独立的代码段,每个代码...

    深入浅出Linux环境编程(进程基础+IPC+POSIX+线程同步与互斥)配套资料

    《深入浅出Linux环境编程》配套资料主要涵盖了四个核心领域:进程基础、IPC(Inter-Process Communication,进程间通信)、POSIX标准以及线程同步与互斥。这些内容是理解和开发Linux系统应用的基础,让我们逐一深入...

    Linux下的多线程编程.pdf

    在多线程编程中,需要注意的一些问题,如变量的共享、数据的同步、互斥等问题。如果不注意这些问题,可能会导致灾难性的后果。 LinuxThreads 库提供了一些多线程编程的关键函数,如 pthread_create() 函数、...

    Linux系统编程之线程同步

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

    嵌入式软件开发技术:第5章 嵌入式Linux多线程编程.ppt

    本章节将详细介绍嵌入式Linux多线程编程的基本概念、线程的创建、同步和互斥、线程属性、多线程实验等方面的知识点。 1. 线程基本概念 在Linux系统中,线程是进程内独立的一条运行路线,处理器调度的最小单元,也...

    Linux c++多线程串口编程demo

    通过这个demo,你可以学习如何在Linux环境下使用C++进行多线程串口编程,理解线程同步的概念,以及如何处理硬件交互。对于理解和应用这些技术,阅读和分析源代码将是至关重要的。同时,这个项目也可以作为进一步研究...

    linux多线程编程.pdf

    除了基本的线程创建和退出外,多线程编程中还需要考虑线程同步的问题。当多个线程需要访问同一数据或资源时,为了避免竞态条件,必须使用同步机制来确保数据的一致性和完整性。例如,互斥锁(mutex)就是一个常用的...

    Linux环境下多线程编程及信号灯同步互斥应用指南

    此外,还探讨了如何使用 semaphore 实现进程间的同步与互斥,通过实例解析展示了经典的多线程和进程间通讯问题,如生产者消费者模型、信号灯的应用场景及解决办法。 适合人群:对于有一定Linux系统操作基础的学生...

Global site tag (gtag.js) - Google Analytics