日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux多进程优先级,Linux多线程之优先级

發布時間:2024/7/23 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux多进程优先级,Linux多线程之优先级 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、多線程的作用: 即什么情況考慮使用多線程?

2、多線程的創建: 默認參數創建即可!pthread_create(&tid,NULL,(void *)thread_func,NULL);

3、多線程的同步: 掌握互斥,條件  兩種同步方式即可!

表 1. 線程函數列表

對象

操作

Linux Pthread API

Windows SDK 庫對應 API

線程

創建

pthread_create

CreateThread

退出

pthread_exit

ThreadExit

等待

pthread_join

WaitForSingleObject

互斥鎖

創建

pthread_mutex_init

CreateMutex

銷毀

pthread_mutex_destroy

CloseHandle

加鎖

pthread_mutex_lock

WaitForSingleObject

解鎖

pthread_mutex_unlock

ReleaseMutex

條件

創建

pthread_cond_init

CreateEvent

銷毀

pthread_cond_destroy

CloseHandle

觸發

pthread_cond_signal

SetEvent

廣播

pthread_cond_broadcast

SetEvent / ResetEvent

等待

pthread_cond_wait / pthread_cond_timedwait

SingleObjectAndWait

但我還有一個問題:

4、主線程是否比默認創建的線程優先級更高?

我用如下測試代碼及運行結果說明問題:

#include

#include

#include

#include

void Thread_1()

{

printf("%s ?pid :0x%x, tid :0x%x \n",__func__, ?getpid(), (int)pthread_self());

int i=0,j=0;

while(1)

{

for(j=1;j<5000000;j++)

{

}

//sleep(1); //?刪除sleep,每個線程都全力運行!

i++;

printf("%s, ?%d\n", __func__, i);

}

}

void Thread_2()

{

printf("%s ?pid :0x%x, tid :0x%x \n",__func__, ?getpid(), (int)pthread_self());

int i=0,j=0;

while(1)

{

for(j=1;j<5000000;j++)

{

}

//sleep(1);

i++;

printf("%s, ?%d\n", __func__, i);

}

}

void Thread_3()

{

printf("%s ?pid :0x%x, tid :0x%x \n",__func__, ?getpid(), (int)pthread_self());

int i=0,j=0;

while(1)

{

for(j=1;j<5000000;j++)

{

}

//sleep(1);

i++;

printf("%s, ?%d\n", __func__, i);

}

}

void Thread_main()

{

printf("%s ?pid :0x%x, tid :0x%x \n",__func__, ?getpid(), (int)pthread_self());

int i=0,j=0;

while(1)

{

for(j=1;j<5000000;j++)

{

}

//sleep(1);

i++;

printf("%s, ?%d\n", __func__, i);

}

}

int main()

{

pthread_t ppid1,ppid2,ppid3;

printf("%s ?pid :0x%x, tid :0x%x \n",__func__, ?getpid(), (int)pthread_self());

pthread_create(&ppid1,NULL,(void *)Thread_1,NULL);

pthread_create(&ppid2,NULL,(void *)Thread_2,NULL);

pthread_create(&ppid3,NULL,(void *)Thread_3,NULL);

Thread_main();

return 0;

}

編譯執行結果如下:

$gcc test.c -lpthread

$ ./a.out

刪除sleep,每個線程都全力運行!

運行結果可以看出:主線程沒有明顯的級別優先。

應避免使用“父線程”和“子線程”的說法

main ?pid :0x71c5, tid :0x65bfa720

Thread_2 ?pid :0x71c5, tid :0x64c4b700

Thread_main ?pid :0x71c5, tid :0x65bfa720

Thread_1 ?pid :0x71c5, tid :0x6544c700

Thread_3 ?pid :0x71c5, tid :0x6444a700

Thread_main, ?1

Thread_3, ?1

Thread_1, ?1

Thread_2, ?1

Thread_main, ?2

Thread_3, ?2

Thread_1, ?2

Thread_main, ?3

Thread_2, ?2

Thread_3, ?3

Thread_main, ?4

Thread_1, ?3

Thread_2, ?3

Thread_main, ?5

Thread_3, ?4

Thread_1, ?4

Thread_main, ?6

Thread_2, ?4

Thread_3, ?5

Thread_main, ?7

Thread_1, ?5

Thread_2, ?5

Thread_3, ?6

Thread_main, ?8

Thread_1, ?6

Thread_2, ?6

Thread_main, ?9

Thread_3, ?7

Thread_1, ?7

Thread_main, ?10

Thread_2, ?7

Thread_3, ?8

Thread_main, ?11

Thread_1, ?8

Thread_2, ?8

Thread_main, ?12

Thread_3, ?9

Thread_1, ?9

Thread_2, ?9

Thread_main, ?13

Thread_3, ?10

Thread_1, ?10

Thread_main, ?14

Thread_2, ?10

Thread_3, ?11

Thread_1, ?11

Thread_main, ?15

Thread_2, ?11

Thread_3, ?12

Thread_main, ?16

Thread_1, ?12

Thread_2, ?12

Thread_main, ?17

Thread_3, ?13

Thread_2, ?13

Thread_main, ?18

Thread_3, ?14

Thread_1, ?13

Thread_2, ?14

Thread_main, ?19

Thread_3, ?15

Thread_1, ?14

Thread_2, ?15

Thread_main, ?20

Thread_3, ?16

Thread_main, ?21

Thread_2, ?16

Thread_1, ?15

Thread_main, ?22

Thread_3, ?17

Thread_2, ?17

Thread_main, ?23

Thread_1, ?16

Thread_3, ?18

Thread_2, ?18

Thread_main, ?24

Thread_1, ?17

Thread_2, ?19

Thread_3, ?19

Thread_main, ?25

Thread_3, ?20

Thread_2, ?20

Thread_main, ?26

Thread_1, ?18

Thread_main, ?27

Thread_2, ?21

Thread_3, ?21

Thread_1, ?19

Thread_main, ?28

Thread_2, ?22

Thread_3, ?22

Thread_main, ?29

Thread_1, ?20

Thread_3, ?23

Thread_2, ?23

Thread_main, ?30

Thread_1, ?21

Thread_2, ?24

Thread_3, ?24

Thread_main, ?31

Thread_1, ?22

Thread_main, ?32

Thread_3, ?25

Thread_2, ?25

Thread_main, ?33

Thread_1, ?23

Thread_2, ?26

Thread_3, ?26

Thread_main, ?34

Thread_1, ?24

Thread_3, ?27

Thread_2, ?27

Thread_main, ?35

Thread_1, ?25

Thread_2, ?28

Thread_main, ?36

Thread_3, ?28

Thread_main, ?37

Thread_1, ?26

Thread_3, ?29

Thread_2, ?29

Thread_main, ?38

Thread_1, ?27

Thread_3, ?30

Thread_main, ?39

..........

Thread_main, ?3736 Thread_2, ?3671 Thread_1, ?2888 Thread_main, ?3737 Thread_3, ?2840 Thread_2, ?3672

總結

以上是生活随笔為你收集整理的linux多进程优先级,Linux多线程之优先级的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。