有时一个互斥量是不够的:
比如:
当多个线程同时访问一个队列结构时,你需要2个互斥量,一个用来保护队列头,一个用来保护队列元素内的数据。
当为多线程建立一个树结构时,你可能需要为每个节点设置一个互斥量。
同时使用多个互斥量会导致复杂度的增加
最坏的情况就是死锁的发生,即两个线程分别锁住一个互斥量而等待对方的互斥量。
多互斥量可能导致死锁:
如果...
分类:
编程语言 时间:
2014-05-13 16:32:03
阅读次数:
533
前言:
多线程程序中,特别是频繁申请,释放线程的情况下,就要注意线程的关闭,最好使用线程池。
一,线程退出方式
(1) 执行完成后隐式退出;
(2) 由线程本身显示调用pthread_exit 函数退出;
pthread_exit (void * retval) ;
(3) 被其他线程用pthread_c...
分类:
编程语言 时间:
2014-05-13 16:22:59
阅读次数:
286
1 引言
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。
为什么有了进程的概念后,还要再引入线程呢?使用...
分类:
编程语言 时间:
2014-05-13 14:02:28
阅读次数:
467
Android开发中我们会经常遇到图片过多或操作不当造成Out
of Memory异常,有时虽然是解决了这个问题但却会影响程序的运行效率,例如:当用户在快速滑动滚动条的过程中,我们程序在仍在艰难的加载服务器端的图片,这样给用户造成了极不好的体验。其实网络上关于图片的异步加载和缓存的讲解很多,但是其实,写一个这方面的程序还是比较麻烦的,要考虑多线程,缓存,内存溢出等很多方面,针对这一广大开发者都...
分类:
移动开发 时间:
2014-05-13 13:36:52
阅读次数:
359
#!/usr/bin/envpythonimportthreadingimporttimeimportparamikoimportos,sysfromipimportip_list,web_server,ip_msgfromoptparseimportOptionParserfromssh_co.cfg.configimporthost_msgdefopts():parser=OptionParser(usage="usage%progoptions")parser.add_option("-i","--it..
分类:
编程语言 时间:
2014-05-13 03:32:03
阅读次数:
537
多线程进程是一个正在执行的程序。cpu在同时执行这些程序,其实是跳跃式的,做快速的切换,时间很短。一个进程可能存在多条路径。迅雷的多路径。每一个进行执行都有一个执行顺序,该顺序是一个执行路径,或这叫一个控制单元。每一个进程至少有一个线程,线程就是进程中的一个独..
分类:
编程语言 时间:
2014-05-13 03:24:57
阅读次数:
397
多线程协同线程间的通讯:我们对资源的操作动作不同,比如说两个卡车一个拉煤一个装煤。但是他们共享了一个资源。怎么样把这个资源拿出来?怎样把车装满?这个资源当然是一个类,他里面的组成元素就是对象!!现在我们就要有操作对象的思想了,我用对象把这车装满,现在一车装..
分类:
编程语言 时间:
2014-05-13 02:42:52
阅读次数:
452
1、当你想并发去执行一段代码,但是还想获取这段代码的返回结果,那么future多线程模式就可以派上用场了,代码实现如下。publicclassClient{
publicDatarequest(){
finalFutureDatafutureData=newFutureData();
newThread(newRunnable(){
@Override
publicvoidrun(){
futureDat..
分类:
编程语言 时间:
2014-05-13 01:29:02
阅读次数:
405
接着上一篇博文,原来双线程,现在为了实现暂停/继续功能,又加了一个线程。第三线程使用条件信号量,当用户按下S键,第三线程将检测到,并且将ifpause置为1,然后输出线程将在if语句成立后被条件信号量cond阻塞。此时第三线程依然运行。当检测到按下R后,ifpause置为0,并且使..
分类:
编程语言 时间:
2014-05-13 01:02:13
阅读次数:
507