多线程
三省于身
每天进步一小步,迈出成功一大步
展开
-
Posix多线程笔记(一)— — — (线程和进程的比较)
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些原创 2015-04-08 15:53:57 · 501 阅读 · 0 评论 -
Posix多线程笔记(六)-----信号量
信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。函数sem_trywait()和函数pthread_ mutex_trylock()起同样的作用,它是函数sem_wait()的非阻塞版本。下面我们逐个介绍和信号量有关的一些函数,它们都在头转载 2015-04-08 17:28:35 · 539 阅读 · 0 评论 -
Posix多线程笔记(四)-----互斥锁
互斥锁用来保证一段时间内只有一个线程在执行一段代码。必要性显而易见:假设各个线程向同一个文件顺序写入数据,最后得到的结果一定是灾难性的。 我们先看下面一段代码。这是一个读/写程序,它们公用一个缓冲区,并且我们假定一个缓冲区只能保存一条信息。即缓冲区只有两个状态:有信息或没有信息。void reader_function ( void );void writer_function转载 2015-04-08 17:26:17 · 399 阅读 · 0 评论 -
关于signal(SIGPIPE,SIG_IGN);
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据 时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出), 所以client会退出。若不想客户端退出可以把 SIGPIPE设为SIG_IGN原创 2015-04-08 16:56:03 · 680 阅读 · 0 评论 -
Posix多线程笔记(三)—线程属性(3)
六、线程的作用域 函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下: 7.名称::pthread_attr_setscopepthread_attr_getscope功能:转载 2015-04-08 16:55:13 · 375 阅读 · 0 评论 -
poSix多线程笔记二-----基础
一.什么是线程 在一个程序里的多个执行路线就叫做线程。更准确的定义是:线程是“一个进程内部的一个控制序列”。 典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各只独立的任务。 二.线程的优点(1) 通过为每种事转载 2015-04-08 16:13:13 · 363 阅读 · 0 评论 -
Posix多线程笔记(五)-----条件变量
前一节中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线转载 2015-04-08 17:28:14 · 328 阅读 · 0 评论 -
Posix多线程笔记(三)—线程属性(1)
一.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。 1.名称::pthread_attr_init/pthread_attr_destro转载 2015-04-08 16:22:35 · 261 阅读 · 0 评论 -
Posix多线程笔记(三)—线程属性(2)
四、线程的调度策略 函数pthread_attr_setschedpolicy和pthread_attr_getschedpolicy分别用来设置和得到线程的调度策略。 4.名称::pthread_attr_getschedpolicypthread_attr_setschedpolicy功转载 2015-04-08 16:52:04 · 316 阅读 · 0 评论 -
Posix多线程笔记(七)----- 线程数据共享的方式
为了防止数据共享 带来的问题,常使用如下方法组合来解决问题1.互斥锁 + 条件变量2.互斥锁 + 信号量 互斥锁用于锁定用户共享数据, 条件变量 或者信号量 可以当做是 线程间通信的方式。(一个线程激活另外一个休眠的线程)。原创 2015-04-08 17:40:47 · 339 阅读 · 0 评论