Linux编程之线程
文章平均质量分 92
ygl840455828ygl
撕得粉碎地方
展开
-
Linux线程编程 - 线程同步机制之条件变量
前一节中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。当线程A释放锁后,线程B和线程A多锁的竞争是平等的,所以会造成线程A继续抢占到锁,如果线程A一直抢占到锁,那么线程B就一直不会执行。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程原创 2016-08-26 17:35:55 · 638 阅读 · 0 评论 -
Linux线程编程 - 线程同步机制之读写锁通信机制
概述读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态,要么是不加锁状态,而且一次只有一个线程对其加锁。读写锁可以有三种状态:读模式下加锁状态,写模式下加锁状态,不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可用同时占有读模式的读写锁。读写锁也叫做共享-独占锁,当读写锁以读模式锁住时,它是以共享模式锁住的,当它以写模式锁住时,它是以独占模式锁住的。原创 2016-08-29 09:02:56 · 641 阅读 · 0 评论 -
Linux线程编程 - 线程同步机制之信号量
信号量既可以作为二值计数器(即0,1),也可以作为资源计数器. 信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。函数sem_trywait()和函数pthread_ mutex_trylock()起同样的作用,它是函数sem_wa原创 2016-08-29 10:02:57 · 404 阅读 · 0 评论 -
Linux线程编程 - 多线程异步管理之信号
线程在信号操作时的特性 (1)每一个线程可以向别的线程发送信号。pthread_kill()函数用来完成这一操作。(2)每一个线程可以设置自己的信号阻塞集合。pthread_sigmask()函数用来完成这一操作,其类似于进程的sigprocmask()函数。(3)每个线可以设置针对某信号处理的方式,但同一进程中对某信号的处理方式只能有一个有效,即最后一次设置的处理方式。(4)原创 2016-08-29 10:07:08 · 994 阅读 · 0 评论 -
Linux线程编程 - 线程属性控制
获取线程ID实例函数pthread_self()将返回当前线程的ID值。1. 在当前Linux下,线程ID在某进程中是唯一的,在不同的进程中创建的线程可能出现ID值相同的情况。2. 而在内核中,每个线程都有自己的PID(但通过ps命令不能查看,也不会再/proc目录下生成对应PID的编号的目录),用户可以通过syscall函数返回。[cpp] v原创 2016-08-29 10:12:13 · 533 阅读 · 0 评论 -
Linux线程池(C语言)及简单实现示例
线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程池提供了原创 2016-08-29 10:45:25 · 524 阅读 · 0 评论 -
Linux线程编程 - 线程同步机制之互斥锁
互斥锁基本原理互斥以排他方式防止共享数据被并发修改。互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁绑定后,对该共享资源的访问如下操作:(1)在访问该资源前,首先申请该互斥锁,如果该互斥处于开锁状态,则申请到该锁对象,并立即占有该锁(使该锁处于锁定状态),以防止其它线程访问该资源;如果该互斥锁处于锁定状态,默认阻塞等待;(2)只有锁定该互原创 2016-08-26 16:43:57 · 552 阅读 · 0 评论 -
Linux线程编程 - 线程概念及创建线程
线程与进程的对比线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。进程在使用时占用了大量的内存空间,特别是进行进程间通信时一定要借助操作系统提供的通信机制,这使得进程有自身原创 2016-08-26 13:56:24 · 625 阅读 · 0 评论 -
Linux线程编程 - 线程退出与等待
线程退出新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出:调用pthread_exit函数退出。调用pthread_cancel函数取消该线程。创建线程的进程退出或者整个函数结束。其中的一个线程执行了exec类函数执行新的进程。等待线程退出线程示例[cpp] view plai原创 2016-08-26 14:42:28 · 6551 阅读 · 0 评论