您的位置:首页
多线程创建、传参、共享数据、终止、等待、清除【转】
2016-11-16 20:23
507 查看
本文转载自:http://www.cnblogs.com/lcw/p/3236418.html
和进程相比,它是一种“节俭”的多任务操作方式。在linux系统下,启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵的”多任务工作方式。
运行于一个进程中的多个线程,他们之间使用相同的地址空间,而且线程间彼此切换所用的时间也远远小于进程间切换所用的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。
使用多线程理由之二:
线程间方便的通信机制。对不同进程来说,他们具有独立的数据空间,要进行数据传递只能通过进程间通信的方式进行,这种方式不仅耗时而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
除了以上优点之外,多线程作为一种多任务、并发的工作方式,有如下优点:
使多CPU系统更加有效,操作系统会保证当线程数不大于CPU数目时,不同的线程运行在不同的CPU上。
改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或者半独立的部分,这样的程序会有利于理解和修改。
tidp:线程ID
attr:线程属性(通常为空)
start_rtn:线程要执行的函数
arg:start_rtn的参数
多线程优点
使用线程的理由之一:和进程相比,它是一种“节俭”的多任务操作方式。在linux系统下,启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵的”多任务工作方式。
运行于一个进程中的多个线程,他们之间使用相同的地址空间,而且线程间彼此切换所用的时间也远远小于进程间切换所用的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。
使用多线程理由之二:
线程间方便的通信机制。对不同进程来说,他们具有独立的数据空间,要进行数据传递只能通过进程间通信的方式进行,这种方式不仅耗时而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
除了以上优点之外,多线程作为一种多任务、并发的工作方式,有如下优点:
使多CPU系统更加有效,操作系统会保证当线程数不大于CPU数目时,不同的线程运行在不同的CPU上。
改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或者半独立的部分,这样的程序会有利于理解和修改。
创建线程
#include<pthread.h> int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,void *(*start_rtn)(void),void arg)
tidp:线程ID
attr:线程属性(通常为空)
start_rtn:线程要执行的函数
arg:start_rtn的参数
编译
因为pthread的库不是LINUX系统库,所以在编译的时候要加上 -lphread#gcc filename -lphread -o 。。。
线程实例之pthread_join()
View Code相关文章推荐
- 【线程】多线程创建,传参,共享数据,终止,等待,清除
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- Linux 线程(创建/等待/终止)
- 多线程操作共享资源时 设置线程等待
- 进程控制—进程创建/等待/终止
- 多线程间的数据共享和对象独立,ThreadLocal详解
- 黑马程序员_线程高级_多线程,同步,互斥,线程数据共享
- 嵌入式Linux应用程序开发——多线程1(线程的创建和等待)
- linux下多线程的创建与等待详解
- Task 创建 传参 等待 回调 获取返回值
- 多线程之——共享数据
- 多线程中共享对象,创建线程安全类
- C# 多线程并发处理数据库数据,发送信号等待处理完统一插入.
- 多线程(三) 实现线程范围内模块之间共享数据及线程间数据独立(ThreadLocal)
- Java多线程——出售票(线程同步,数据共享)
- 多线程学习--案例--多线程中数据共享--设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序
- JAVA多线程(四)多线程数据共享
- linux下多线程的创建与等待详解
- 多线程数据共享
- 多线程共享数据的不一致性验证