執行緒的面試題目

2021-06-17 20:30:44 字數 1549 閱讀 1651

1.

子執行緒迴圈 10 次,接著主線程迴圈 100 次,接著又回到子執行緒迴圈 10 次,接著再回到主線程又迴圈 100 次,如此迴圈50次,試寫出**。

2.編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a、b、c,每個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示;如:abcabc….依次遞推。

3.有四個執行緒1、2、3、4。執行緒1的功能就是輸出1,執行緒2的功能就是輸出2,以此類推.........現在有四個檔案abcd。初始都為空。現要讓四個檔案呈如下格式:

a:1 2 3 4 1 2....

b:2 3 4 1 2 3....

c:3 4 1 2 3 4....

d:4 1 2 3 4 1....

請設計程式。

4.這是乙個非常經典的多執行緒題目,題目大意如下:有乙個生產者在生產產品,這些產品將提供給若干個消費者去消費,為了使生產者和消費者能併發執行,在兩者之間設定乙個有多個緩衝區的緩衝池,生產者將它生產的產品放入乙個緩衝區中,消費者可以從緩衝區中取走產品進行消費,所有生產者和消費者都是非同步方式執行的,但它們必須保持同步,即不允許消費者到乙個空的緩衝區中取產品,也不允許生產者向乙個已經裝滿產品且尚未被取走的緩衝區中投放產品。

5.讀者寫者問題

這也是乙個非常經典的多執行緒題目,題目大意如下:有乙個寫者很多讀者,多個讀者可以同時讀檔案,但寫者在寫檔案時不允許有讀者在讀檔案,同樣有讀者讀時寫者也不能寫。

第4題**:

#include #include #include #include #include //#define debug 1

#define num 3

int n=0;

pthread_mutex_t mylock=pthread_mutex_initializer;

pthread_cond_t qready=pthread_cond_initializer;

void * thread_func(void *arg)

else

}

// printf("%d ",param+1);

printf("%c ",c);

n=(n+1)%num;

pthread_mutex_unlock(&mylock);

pthread_cond_broadcast(&qready);

}

return (void *)0;

}

int main(int argc, char** argv) {

int i=0,err;

pthread_t tid[num];

void *tret;

for(;i執行結果:

第五題:

選項a,**只需要將num改為4,printf("%c ",c)改為printf("%d ",param+1);即可

執行結果如下:

選項b,將全域性變數n改為1

選項c,將全域性變數n改為2

選項d,將全域性變數n改為3

多執行緒 秒殺多執行緒面試題目

1 秒殺多執行緒第一篇 多執行緒筆試面試題彙總 2 秒殺多執行緒第二篇 多執行緒第一次親密接觸createthread與 beginthreadex本質區別 3 秒殺多執行緒第三篇 原子操作interlocked系列函式 4 秒殺多執行緒第四篇 乙個經典多執行緒同步問題 5 秒殺多執行緒第五篇 經典...

C 面試題目

1 ispostback正確的是 首次載入頁面的ispostback的值為false 重新整理頁面後的ispostback的值為true 第三個選項忘了 2 頁面傳值的幾種方式 request.querystring session server.transfer 3 什麼是瀏覽器的 無狀態 如何解...

面試題目總結

1.char p和char p的區別。1 char getstring void void main 2 char getstring void void main 為什麼 1 輸出的是亂碼,2 能夠輸出 hello world?hello world 作為靜態字串實際上儲存在文字常量區 參見 棧和...