|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 线程不能独立运行,要依附于进程
/ i" l! v* y4 x v5 E+ G
# u/ p0 p; |! M. @" v* ^, g1 N$ v2 如果创建一个子线程只需要重新分配栈空间. B4 i- e8 M1 _ Q2 ]: |. y) C7 x
6 ]) W% L3 W# V2 U F
3 多个线程可以并行运行, c0 ~2 {; ]! O" u
e( ~ m( v9 k! @" M: Y4 线程之间可以有共同的全局变量(全局区,任何线程都可以访问)
6 x# K7 _) v9 A6 ?7 d% w/ C" ^0 E+ S; r
5 多线程效率高
4 l7 a9 U. u0 N* k! `0 t5 ?8 V
6 _6 j! _( f. [- d6 u% S
) y3 o; d. }7 ~ g2 Y如何创建子线程(在进程中创建线程)$ T* Y9 @+ P" q
+ _+ a8 @: ~. L2 s" d8 [ a" L+ p- Q
#include; u" j& O1 e; \ |+ H3 q" p) |+ g
! Z0 I4 [0 f0 s% ^4 G5 t
int pthread_create(pthread_t *thread, pthread_arrt_t *attr, void *(*start_routine)(void *), void *arg);' K' G8 O( v% j4 E% t* a
( J7 ?4 ^5 n# q5 H功能:创建一个子线程( G j# t Z1 n* ?! b. O, H& _4 p9 C
8 V* t a9 v% n0 L* i
参数:
: j* B H1 r1 B' V: ] l* v
8 ], t! R$ n* G; gthread [出参],当程序执行此函数,此函数会传出一个值,线程的id9 f1 j$ L! Z+ N
+ o: n$ a* ], {7 @3 v# o
attr [入参],通常为NULL, 线程的属性,如果为NULL, 属性默认(线程优先级,线程堆栈大小....)1 I) g( c- @6 o! d
. y) w, Y) A. p; l, W) F. j8 ^
start_routine 函数指针,需要传进来一个函数名,然后会自动执行此函数,
6 n6 |( u/ d/ J6 u
2 p" J1 l& {9 N& S9 r2 t% v/ b+ z此函数就是线程需要执行的程序
2 Z# S: S5 k6 I& f7 e8 k! c& N# j" |/ B; S
w9 @, N. T- ~1 x+ r
: H! J1 e5 l% X9 R* ^3 s. ~4 U$ [( X4 }7 O1 B8 K0 Q# P. H) `
# w* z2 \/ O# `1 t% x" J: U
% F4 N, g9 j$ s; ^4 f! H3 Q/ @: K3 t: c( c
$ k3 b4 N# T) a! L3 Q% w
1 Y. N- M. Y: I) w: d9 `2 t2 k2 _5 n7 R( D' t8 H
& i8 n! {) c- M6 G& L) T |
|