找回密码
 注册
关于网站域名变更的通知
查看: 287|回复: 1
打印 上一主题 下一主题

Linux多线程编程(一)---从多线程基本概念到编程(上)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-9-20 13:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 thinkfunny 于 2019-9-20 14:15 编辑
9 E/ P0 F3 F7 \8 h1 B9 R. G* Y* I$ k+ D" |4 J+ L5 V( I* f
线程概念+ j$ t  e+ {0 S2 f
9 M) i/ S5 {- \; o: O5 N
    线程是指运行中的程序的调度单位。一个线程指的是进程中一个单一顺序的控制流,也被称为轻量级线程。它是系统独立调度和分配的基本单位。同一进程中的多个线程将共享该系统中的全部系统资源,比如文件描述符和信号处理等。一个进程可以有很多线程,每个线程并行执行不同的任务。
( @$ k) w0 ~6 p7 b! I
) ?9 v7 r4 K6 U9 |- J. u线程与进程比较
2 N4 ?' n. `7 c

) J% w7 x" T+ F: I( ?   ①  和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统中,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护其代码段、堆栈段和数据段,这种多任务工作方式的代价非常“昂贵”。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且线程间彼此切换所需要时间也远远小于进程间切换所需要的时间。
' n5 d; s6 \; q  {; ]' o5 j& J' w  ~
   ②  线程间方便的通信机制。对不同进程来说它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行。这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其他线程所用,不仅方便,而且快捷。
. W/ O( E+ O: p3 f5 i' g0 D! O: d9 }6 t* S( n3 C- _
线程基本编程
4 p7 n0 o) e" P+ t; B2 {# z

: O+ v: Z2 |! |$ g5 A   Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。因为pthread的库不是Linux系统的库,所以在编译时要加上 -lpthread。例如:gcc  filename  -lpthread。注意,这里要讲的线程相关操作都是用户空间中的线程的操作。# W" x! T8 A5 R% D; {- r  O4 ?2 [& O/ }
6 `4 j7 }! D, Y" G
   线程创建:创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create()。在线程创建后,就开始运行相关的线程函数。
5 t: u* M% B& y. ^9 N% V% @8 a
游客,如果您要查看本帖隐藏内容请回复

2 j, c3 T1 Z, l' W9 a/ y7 [# E0 e9 u$ j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-23 22:12 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表