- 浏览: 75009 次
- 性别:
- 来自: 北京
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; }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 600#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 740#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 699#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 643#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 643#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 660#include <stdio.h> vo ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1512#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 598#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 682#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1177typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1404/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---字符串---全/部分组合和全排列
2011-08-30 23:01 1216#include <stdio.h> #i ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1891/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1249/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1892/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 562http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1574结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 601#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 929hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 695/*************************** ...
相关推荐
总结,Linux上的多进程和多线程编程涉及复杂的同步互斥操作,开发者需要理解各种同步机制,根据具体需求选择合适的方法。通过阅读和学习提供的源代码,可以加深对这些概念的理解,提升实际开发能力。
Linux下多线程及多进程及同步与互斥编程详细介绍
在这个“多线程编程和操作系统线程同步互斥演示”中,作者可能创建了一个或多个人工场景,展示了如何在VC++环境中使用多线程,并且演示了线程同步和互斥的实践应用。这可能涉及到以下几个方面: 1. **线程创建**:...
在《Linux编程手册-多线程-详细资料》中,我们深入探讨了这个主题,旨在帮助无论是初学者还是有经验的程序员都能更好地理解和运用Linux环境下的多线程技术。 首先,多线程基础介绍部分讲解了线程的概念,它是操作...
本实验报告的主要内容是关于Linux多线程编程的技术实验,实验目的主要是掌握线程的概念及基本操作方法,掌握线程间同步互斥基本原理,并能够利用互斥锁进行线程间同步操作。 一、实验目的: 1. 掌握线程的概念及...
在深入讨论Linux操作系统编程,特别是多线程的互斥与同步控制及实践之前,首先需要了解Linux操作系统的基本概念以及多线程编程的基础知识。Linux是一种类Unix的操作系统,它支持多用户、多任务、多线程和多种硬件...
在实验过程中,学生不仅需要掌握多线程编程的理论知识,还要具备实际编程和调试能力,通过实际操作加深对线程同步和互斥、信号量机制的理解,以及Makefile的编写和使用。这对于提升嵌入式系统的开发和维护技能至关...
pthread 库是 Linux 下多线程编程的核心库,提供了丰富的函数和变量来控制线程的创建、执行和同步。 在本实例中,我们将创建两个线程来实现对一个数的递加。这个实例可以帮助我们更好地理解多线程编程的基本概念和...
除了上述基本操作外,线程还涉及到一些高级特性,如线程属性设置、线程同步和互斥等。这些特性对于开发高质量、高性能的应用程序至关重要。 1. **线程属性**:可以通过`pthread_attr_t`结构体来设置线程的各种属性...
本文将深入探讨Linux环境中的多线程概念、创建与管理线程的方法、线程同步与通信机制,以及多线程编程中可能遇到的问题和解决策略。 一、多线程概念 多线程是指在一个进程中可以同时执行多个独立的代码段,每个代码...
《深入浅出Linux环境编程》配套资料主要涵盖了四个核心领域:进程基础、IPC(Inter-Process Communication,进程间通信)、POSIX标准以及线程同步与互斥。这些内容是理解和开发Linux系统应用的基础,让我们逐一深入...
在多线程编程中,需要注意的一些问题,如变量的共享、数据的同步、互斥等问题。如果不注意这些问题,可能会导致灾难性的后果。 LinuxThreads 库提供了一些多线程编程的关键函数,如 pthread_create() 函数、...
所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时候使用该机制。但,并没有强制限定。 因此,即使有了mutex,如果有线程不按规则来访问数据,依然会造成...
本章节将详细介绍嵌入式Linux多线程编程的基本概念、线程的创建、同步和互斥、线程属性、多线程实验等方面的知识点。 1. 线程基本概念 在Linux系统中,线程是进程内独立的一条运行路线,处理器调度的最小单元,也...
通过这个demo,你可以学习如何在Linux环境下使用C++进行多线程串口编程,理解线程同步的概念,以及如何处理硬件交互。对于理解和应用这些技术,阅读和分析源代码将是至关重要的。同时,这个项目也可以作为进一步研究...
除了基本的线程创建和退出外,多线程编程中还需要考虑线程同步的问题。当多个线程需要访问同一数据或资源时,为了避免竞态条件,必须使用同步机制来确保数据的一致性和完整性。例如,互斥锁(mutex)就是一个常用的...
此外,还探讨了如何使用 semaphore 实现进程间的同步与互斥,通过实例解析展示了经典的多线程和进程间通讯问题,如生产者消费者模型、信号灯的应用场景及解决办法。 适合人群:对于有一定Linux系统操作基础的学生...