|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 线程不能独立运行,要依附于进程
[7 Z2 ?& ]4 H9 ^. U/ x. {! h: I" e" m4 r* ~3 s9 Y, U# i
2 如果创建一个子线程只需要重新分配栈空间
+ r$ P' p( W, \, \' J* ^% [ E2 ~" K+ G, Z$ ]
3 多个线程可以并行运行- \# i! ]+ ~3 q
" r# p6 x+ g' \; t( L9 g5 O- k
4 线程之间可以有共同的全局变量(全局区,任何线程都可以访问)
* |- f; j: u: t; G0 C: P/ i
) J* \& O" }: ~6 s1 E5 多线程效率高9 D* Y ~/ _1 W' J9 z: U4 z
1 |) Y, A% ?4 t
' ]* p% j/ b, t6 c, T" R如何创建子线程(在进程中创建线程)
4 E# g8 ^: ^3 s8 U/ E- `% S3 _( n7 d! Q; i/ v) q* d( i& y3 z
#include
8 W3 U+ i% B+ Z$ Q* j8 s4 L( P, ?0 ]# ?4 I
int pthread_create(pthread_t *thread, pthread_arrt_t *attr, void *(*start_routine)(void *), void *arg);
7 a! P' O0 h1 Q0 k) D) D2 e: A) }; [8 s t
功能:创建一个子线程
: \; U$ s7 ]+ c* v
# [- `% k [* x Z$ d; J) `3 C参数:8 Q& r* G! O7 V! J7 @
( T0 K( B, ^) x7 [# ? Cthread [出参],当程序执行此函数,此函数会传出一个值,线程的id
6 }, B2 f- {; ^- ?7 d O) q; I
2 V' g/ }5 ?6 k1 U; i4 Rattr [入参],通常为NULL, 线程的属性,如果为NULL, 属性默认(线程优先级,线程堆栈大小....)
9 u& C- S6 m7 X: m! S4 e' c/ p1 N1 r( j7 W' m0 d' X7 v
start_routine 函数指针,需要传进来一个函数名,然后会自动执行此函数,; Z1 E2 A* Y8 Q$ T) G8 r
- P- v% Y0 w' m4 c M此函数就是线程需要执行的程序! o |/ ?7 @( F& u( x; C
+ g U) k! u# w8 |* n. j
; X. |& p. n' O! I. R( S$ U" R- M" w: b* A) l
3 g' F! I1 M: I$ l5 n1 ?; t1 | ]- \7 \. x2 d" O* Q5 F
" D# }% `' j5 T- n+ m4 w0 J- c3 D7 b, A6 U0 k8 L! @. o
+ [, r) K* ]- k- L. _* l( X, E5 ?- R. T
! `; |) E( S! Q' E& m5 ]1 c3 c* u% F& r
|
|