linux之线程操作
文章平均质量分 72
带鱼兄
爱在新空气,快乐每一天
展开
-
linux查看进程线程数
基本概念:线程是最小调度单位原创 2016-01-21 10:21:19 · 15039 阅读 · 0 评论 -
线程属性
基本概念:pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为。一、线程属性的初始化与反初始化PTHREAD_ATTR_INIT(3) Linux Programmer's Manual PTHREAD_ATTR_INIT(3)NAME pthread_attr_init, pthread_attr_dest原创 2016-08-14 16:00:35 · 811 阅读 · 0 评论 -
linux多线程之屏障
基本概念:屏障(barrier)是用户协调多个线程并行工作的同步机制。屏障允许每个线程等待,直到所有的合作线程都达到某一点,然后从该点继续执行。一、初始化与销毁PTHREAD_BARRIER_DESTROY(P) POSIX Programmer's ManualPTHREAD_BARRIER_DESTROY(P)NAME pthread_barrier_de原创 2016-08-14 14:26:36 · 4338 阅读 · 2 评论 -
linux多线程之互斥锁
基本概念:互斥变量是用pthread_mutex_t数据类型表示的。在使用互斥变量以前,必须首先对它进行初始化,可以把它设置为常量PTHREAD_MUTEX_INITIALIZER(只适用于静态分配的互斥量),也可以通过调用pthread_mutex_init函数进行初始化。如果动态分配互斥量(例如,通过调用malloc函数),在释放内存前需要调用pthread_mutex_destroy。原创 2016-08-13 18:24:49 · 1455 阅读 · 0 评论 -
linux多线程之自旋锁
基本概念:何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用原创 2016-08-14 00:17:27 · 4906 阅读 · 0 评论 -
linux多线程之读写锁
基本概念:读写锁也叫做共享互斥锁。当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态,所有试图以读模式对它进行加锁的线程都可以得到访问权。与互斥量相比,读写锁在使用之前必须初始化,在释放它们底层的内存之前必须销毁。一、锁的初始化与销毁PTHREAD_RWLOCK_DESTROY(P) POSIX Programmer原创 2016-08-13 21:33:15 · 2561 阅读 · 2 评论 -
linux多线程编程详解
注:如果unubtu下 man手册不全,需要安装 apt-get install manpages-posix-dev一、线程创建PTHREAD_CREATE(3) Linux Programmer's Manual PTHREAD_CREATE(3)NAME pthread_create - create a new threa原创 2016-08-13 01:48:57 · 991 阅读 · 0 评论 -
线程和信号
基本概念:每个线程都有自己的信号屏蔽字,但是信号的处理是进程所以线程共享的。这意味着单个线程可以阻止某些信号,但当某个线程修改了与某个给定信号相关的处理行为以后,所有的线程都必须共享这个行为处理的改变。进程中的信号是传递到单个线程的。如果一个信号与硬件故障相关,那么该信号一般都会被发送到引起该事件的线程中去,而其他的信号则被发送到任意一个线程。要把信号发送给线程,可以调原创 2016-08-14 15:04:08 · 748 阅读 · 0 评论 -
linux多线程之条件变量
基本概念:条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定条件发生。条件变量本身是互斥量保护的。线程在改变条件状态之前必须首先锁住互斥量。在使用条件变量之前,必须先对它进行初始化。由pthread_cond_t数据类型表示的条件变量可以用两种方式初始化,可以把常量PTHREAD_COND_INITIA原创 2016-08-13 23:23:41 · 1101 阅读 · 0 评论 -
linux线程同步和进程同步的区别
基本概念:大部分同学都知道线程同步和进程同步的概念,线程同步:多线程编程中,解决共享资源冲突的问题进程同步:多进程编程中,解决共享资源冲突的问题但是部分同学对线程同步和进程同步研究得不够深入,比如互斥锁和条件变量能不能同时用于线程同步和进程同步,本质上有什么区别。首先我们知道,linux下每个进程都有自己的独立进程空间,假设A进程和B进程各有一个互斥锁,这个锁放原创 2016-06-18 23:34:45 · 7678 阅读 · 1 评论 -
linux下多进程/多线程文件操作详解
一、基本概念内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响1.每个进程在进程表都有一个记录项,记录项中包含有一张打开文件描述符表,与文件描述符相关联的是:a)文件描述符标志b)指向一个文件表项的指针,父子进程共享一个文件表项2.内核为所有打开文件维持一张文件表,每个文件表项包括a)文件状态标志(读、写、同步、非阻原创 2016-07-24 20:18:37 · 17905 阅读 · 7 评论 -
进程栈与线程栈
什么是虚拟内存?什么是进程栈?什么是线程栈?这几个知识点是有关联的。原创 2015-12-17 00:07:56 · 2420 阅读 · 0 评论 -
线程同步:条件变量实现生产者消费者模型
概念: 假设实现一个生产者消费者模型,仓库只能装100万件item,生产者每次生产1件,消费者每次消费1件,为了保持数据的同步,那么生产者每次都需要检查仓库是否满了,消费者每次都需要检查仓库是否空了,在加上互斥锁前提下,数据是能得同步保证的。循环的访问且每次都给互斥锁加锁解锁,又称为轮询,如果经常做无用功则线程一直在空转,十分浪费CPU。如果在仓库满了,我们希望生产者停下来等待,同理如果仓库原创 2016-01-05 22:23:38 · 2155 阅读 · 0 评论 -
linux分离线程
基本概念:在默认情况下,线程的终止状态会保存到对该线程调用pthread_join,如果线程已经处于分离状态,线程的底层存储资源可以在线程终止时立即被回收。当线程被分离时,并不能用pthread_join函数等待它的终止状态。对分离状态的线程进行pthread_join的调用可以产生失败,返回EINVAL。有两种方法可以实现线程分离:1.调用pthread_detach#i原创 2016-02-21 20:57:22 · 1063 阅读 · 0 评论 -
互斥量避免死锁
互斥量,也叫互斥锁。通常造成死锁的有两种方式:1.线程A试图对用一个互斥量mutexA加锁两次,那么它自身就会陷入死锁状态,用伪代码表示就是:pthreadA:pthread_mutex_lock(&mutexA)pthread_mutex_lock(&mutexA) /* 这里死锁 */2.程序中使用多个互斥量时,如果允许一个线程一直占有第一个互原创 2016-02-21 19:29:28 · 3804 阅读 · 0 评论 -
C语言实现的线程池
概念: 如果一个程序每处理一个任务都需要创建一个线程来处理,假设创建线程的时间为T1,任务执行的时间为T2,线程销毁的时间为T3,那么线程的有效使用时间率为T2/(T1+T2+T3),如果任务执行的时间非常短,那么线程的使用效率就会非常低,这对高并发的服务器性能来说是不能接受的,所以需要引入线程池概念。注意点:1.线程同步问题,互斥锁,条件变量,信号量都可以用于线程同步,单纯原创 2016-01-07 23:28:54 · 2716 阅读 · 2 评论