
linux进程和线程编程
文章平均质量分 50
xtx1990
新一代年轻人
展开
-
死锁
所谓死锁,是指多个进程因竞争资源而形成一种僵局,若无外力作用,这些进程都将永远不能再向前推进。 1.产生死锁的原因(1)竞争资源(2)进程推进顺序不当 2.产生死锁的必要条件(1)互斥条件(2)请求和保持条件(3)不剥夺条件(4)环路等待条件只要同时具备上述4个必要条件,系统就会发生死锁,只要上述条件之一不满足,系统就不会发生死锁。3.处理死锁的方法原创 2012-11-12 13:38:06 · 403 阅读 · 0 评论 -
进程与线程
进程概念 进程是表示资源分配的基本单位 线程概念 线程是进程中执行运算的最小单位 引入线程的好处 (1)易于调度。 (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。 (3)开销少。创建线程比创建进程要快,所需开销很少。。 (4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理原创 2012-11-12 13:38:34 · 304 阅读 · 0 评论 -
信号量与互斥锁使用区别
互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。基于上面的特点,互斥锁一般用于控制一段临界代码,当然信号量也可以做到。但是如果释放和获取不在一个函数中甚至不在一个线程中时就必须使用信号量了。原创 2012-11-13 19:06:49 · 782 阅读 · 0 评论 -
linux读写锁实现
下面的代码来自开源 sip项目pjsip,觉得实现的很简洁,下次自己要实现的时候可以借鉴,于是就摘录过来了。该实现不支持同时多个线程写。//读写锁的实现,值得借鉴//不支持多个写struct pj_rwmutex_t{ pj_mutex_t *read_lock;//实际上是用来保护信号量的 /* write_lock must use semaphore, beca原创 2012-11-30 17:47:59 · 1634 阅读 · 0 评论 -
kill与kill -9与killall
最近调试一个bug,最后发现竟然是killall name怎么都杀不死进程,换成killall -9 name就好了,读了下面的解释后恍然大悟了。很多时候,会有人建议你,如果kill杀不掉一个进程,就用kill -9. 为什么?kill是Linux下常见的命令。其man手册的功能定义如下:kill – send a signal to a process明朗了,其实ki转载 2012-12-10 10:48:06 · 5780 阅读 · 0 评论 -
线程局部存储(或者叫线程本地存储)
问题和解决方法:一个程序作为一个进程来运行的时候里面可能会有几个线程在同时工作普通的全局变量在一个进程内唯一所有线程看到的是同一个值使用__declspec(thread)方式(window的方式)声明的全局变量就不是这样它对于一个线程是唯一的不同的线程都可以访问 但是是各自访问各自的 不会冲突为什么要有TLS?原因在于,进程中的全局变量与函数内定义的静态(static)变量,是各转载 2012-11-27 17:53:19 · 2794 阅读 · 0 评论 -
linux下多线程 之 pthread_detach(pthread_self())
多线程稍微看了下还能接受没想象中的难,写了个示例程序运行修改运行修改几遍后也大致明白了。写个碰到的问题,记录下自己的技术之路点滴pthread_detach(pthread_self())linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exi转载 2013-05-13 14:43:59 · 587 阅读 · 0 评论