一个线程的结束有两种途径,一种是象我们下面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。另外需要说明的是,一个线程不能被多个线程等待,也就是说对一个线程只能调用一次pthread_join,否则只有一个能正确返回,其他的将返回ESRCH 错误。
在Linux中,默认情况下是在一个线程被创建后,必须使用此函数对创建的线程进行资源回收,但是可以设...
分类:
编程语言 时间:
2015-08-17 14:00:28
阅读次数:
1174
条件变量是线程同步的另一种手段,主要逻辑就是等待和唤醒。条件不满足时,线程等待;条件满足,线程被(其他线程)唤醒。条件变量一般和互斥量一起使用,因为需要保证多线程互斥地修改条件。涉及到的函数有:int pthread_cond_init(pthread_cond_t *restrict cond.....
分类:
编程语言 时间:
2015-08-15 18:07:36
阅读次数:
115
说明在并发编程中一个典型的问题是生产者–消费者问题。在程序中,有可能会需要用到两个线程通信的情况,比如生产者消费者中,获取一个共享数据,有就消费。没有就等待着生产者生产之后再继续消费。那么这个实现过程就可以使用wait();notify();notifyAll()来达到效果;
以上方法详细解说请查看: Java多线程系列–“基础篇”05之 线程等待与唤醒例子/**
* Created by zh...
分类:
编程语言 时间:
2015-08-08 18:15:44
阅读次数:
223
这次谈话CyclicBarrier栅栏,如可以从它的名字可以看出,它是可重复使用。它的功能和CountDownLatch类别似,也让一组线程等待,然后开始往下跑起来。但也有在两者之间有一些差别1. 不同的对象等。CountDownLatch组线程等待的是一个事件。或者说是一个计数器归0的事件。而Cy...
分类:
编程语言 时间:
2015-07-23 19:53:08
阅读次数:
133
条件变量与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一...
分类:
其他好文 时间:
2015-07-10 13:08:31
阅读次数:
92
首先从公司一道笔试题开始 1 package test; 2 3 public class Test implements Runnable { 4 5 public int i = 0; 6 7 @Override 8 public void run() { 9 ...
分类:
编程语言 时间:
2015-07-09 00:30:49
阅读次数:
119
12.6 线程的属性
在前面的所有程序示例中,都在程序退出之前用pthread_join对线程再次进行同步,如果想让线程向创建它的线程返回数据就需要这样做.但有时,也有这种情况,既不需要第二个线程向主线程返回信息,也不想让主线程等待它的结束.
假设在主线程继续为用户提供服务的同时创建了第二个线程,新线程的作用是将用户正在编辑的数据文件进行备份存储.备份工作结束后,第二个线程就可以直接终止...
分类:
编程语言 时间:
2015-07-07 09:35:03
阅读次数:
163
互斥对象 Mutexprivate Mutex m = new Mutex();public void Method(){
m.WaitOne();
//执行操作
m.ReleaseMutex();
}共享资源SemaphoreSemaphore是一个信号量,可以让多个资源分类型的同时进行。书中一个重要的有代表性的例子就是图书馆有多个电脑,有若干个人使用电脑的问题。是一个不错...
分类:
编程语言 时间:
2015-07-06 12:20:02
阅读次数:
130
屏障(barrier)是用户协调多个线程并行工作的同步机制。屏障允许每个线程等待,直到所有的合作线程到达某一点,然后从该点继续执行。我们已经看到了一种屏障,pthread_join函数就是一种屏障,允许一个线程等待,直到另一个线程退出。但是屏障对象的概念更广。他们允许任意数量的线程等待,直到所有的线...
分类:
其他好文 时间:
2015-06-24 18:14:08
阅读次数:
120
我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。 1、 主线程等待新线程先结束退出,主线程后退出。正常执行。 示例代码: #include #include #include #include #include pthread_...
分类:
编程语言 时间:
2015-06-24 15:57:41
阅读次数:
126