|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 线程不能独立运行,要依附于进程
. ?# A* e) k# p/ n" p% _+ K9 [2 K2 s3 W6 q2 d+ r( B: p" m
2 如果创建一个子线程只需要重新分配栈空间
I! q" n. ]/ i& @; n s5 P' y( ]$ _
3 多个线程可以并行运行
' W3 s4 m7 D) Y5 p- i; Q; x9 @5 ^! r5 ~5 T+ b b
4 线程之间可以有共同的全局变量(全局区,任何线程都可以访问)
. w& j/ R# M6 z& D+ |* f
: n+ W# B- F/ n- J1 `, L1 v5 多线程效率高
3 n- W q7 J% j" |/ z& I
$ l/ N* G$ a3 J U, q# M+ ^/ G
1 m( B9 D" H7 q7 J' C如何创建子线程(在进程中创建线程)& z1 B( ~9 h8 h6 i
2 r n: V; d: R% c2 F; g' f#include
6 x6 k S7 e" I; \, C/ I4 i' j' {! ^. V
int pthread_create(pthread_t *thread, pthread_arrt_t *attr, void *(*start_routine)(void *), void *arg);
d! z, B5 e/ z5 ?' B( h; ~% J% q- P& A3 r
功能:创建一个子线程
5 |. I2 t* D4 G0 G! W* U! E/ Q* w. [( r
参数:
7 I# w0 r: n: S
, |3 ]7 l/ F, L% U9 m4 Wthread [出参],当程序执行此函数,此函数会传出一个值,线程的id
, b; [; R, X3 o" ^0 {/ {
: s" K/ M- w3 b# a' Qattr [入参],通常为NULL, 线程的属性,如果为NULL, 属性默认(线程优先级,线程堆栈大小....)
7 P4 i1 b( D; Z: M! v/ u. z( \. N6 v: }# ?2 `6 R' E! R
start_routine 函数指针,需要传进来一个函数名,然后会自动执行此函数,
. U2 B+ g; C: |; P: k
4 \# N" u, @' F$ C! L此函数就是线程需要执行的程序1 R& d& o" E& W' y
* C6 A/ v- ~4 P' N. _+ }8 h$ E
- ^7 q0 Q2 Q0 |# w* k
/ g$ A+ d X- l: o E) k/ ~2 n( O7 g; M. _
D% {5 D* x7 R' Q u! y& z; m1 D( J- o
/ q4 g1 }* \& x- g9 C
" {0 ?: f: Q' v! B g0 c! ?# r B2 L' F& d/ L! {% M6 v9 H
, a* @3 m0 @0 ?! a8 o
; |* t% t! b$ \6 `9 q( ~ |
|