線程基本操作 (2)線程大綱
線程中包含的內(nèi)容:
1,線程概念 (線程和進程對比),線程的標(biāo)識
2,線程的創(chuàng)建
3,線程的終止與回收 (棧的清理) (線程的取消)
4,線程的取消
5,線程的分離
6,線程屬性 (線程同步的屬性)
7,可重入
8,線程的安全
9,線程同步
10,線程與信號 (線程與fork)
會話,用于承載進程組.
shell就是一個會話,就會產(chǎn)生進程組.
線程就是一個正在運行的函數(shù).
程序中,至少有一個函數(shù)在運行.
main函數(shù)就是一個main線程.
main線程就是和其他線程一樣平等的.
創(chuàng)建出的線程就是兄弟,要平等對待.
線程在同一個地址空間內(nèi),所以線程資源是共享的.
線程是標(biāo)準(zhǔn)化后,才進行創(chuàng)作的,所以線程會更加規(guī)范.
現(xiàn)在的一些庫,都要支持多線程并發(fā),如果不支持,庫中會有標(biāo)注.
線程的標(biāo)準(zhǔn)有很多,用的較多的是 POSIX 標(biāo)準(zhǔn).
它是一套標(biāo)準(zhǔn),而不是實現(xiàn). 相當(dāng)于協(xié)議.
OPENMP也是標(biāo)準(zhǔn).里面也有線程,部分的規(guī)定,和POSIX是不同的...
比如: POSIX中規(guī)定,線程標(biāo)識是 pthread_t類型的...
實現(xiàn)的時候,可能是結(jié)構(gòu)體,可能是指針,可能是整形數(shù).各個系統(tǒng)是不一樣的.
進程就是容器,
用于承載線程.
信號和多線程混用要慎重...
不要大范圍混用,可以在模塊里,小范圍混用.
因為兩者都很難用好...
多線程比信號要簡單.
信號用起來約束較多: 信號處理函數(shù)要越簡單越好,里面不能用io,不能用不可重入函數(shù)...
只能用計算和系統(tǒng)調(diào)用.
linux解決異步方法:
1,多線程;
2,信號;