多執行緒程式設計 程式設計題

2021-09-16 21:44:51 字數 2984 閱讀 7908

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

pthread_mutex_t mutex = pthread_mutex_initializer;

bool ismainthreadturn = false;

#define operation() printf("1")

const int total_loop = 50;

const int sub_op_per_loop = 10;

const int main_op_per_loop = 100;

void* fun(void* arg)

for (int op = 0; op < sub_op_per_loop; ++op)

printf("\n");

ismainthreadturn = true;

pthread_mutex_unlock(&mutex);

pthread_cond_signal(&pcond);

}return (void*)0;

}

int main() 

for (int op = 0; op < main_op_per_loop; ++op)

printf("\n");

ismainthreadturn = false;

pthread_mutex_unlock(&mutex);

pthread_cond_signal(&pcond);

}return 0;

}

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

pthread_cond_t pcond = pthread_cond_initializer;

pthread_mutex_t pmutex = pthread_mutex_initializer;

const int total_loop = 10;

const unsigned int thread_num = 3;

unsigned int threadturntoprint = 0;

__thread unsigned int tid;

#define operation() printf("|%u|", tid)

void* fun(void* arg)

operation();

threadturntoprint = ( 1 + threadturntoprint) % 3;

pthread_mutex_unlock(&pmutex);

pthread_cond_broadcast(&pcond);

}return (void*)0;

}

int main() 

/*in my way, i waste mainthread, as mainthread can also do part of job*/

for (int i = 0; i < thread_num; ++i)

return 0;

}

編寫乙個程式,程式會啟動4個執行緒,向4個檔案1.txt,2.txt,3.txt,4.txt裡寫入資料,每個執行緒只能寫乙個值。 

執行緒a:只寫1

執行緒b:只寫2

執行緒c:只寫3

執行緒d:只寫4

4個檔案1.txt,2.txt,3.txt,4.txt

程式執行起來,4個檔案的寫入結果如下:

a:12341234...

b:23412341...

c:34123412...

d:41234123...

pthread_cond_t pcond = pthread_cond_initializer;

pthread_mutex_t pmutex = pthread_mutex_initializer;

const int total_loop = 10;

const int thread_num = 4;

int fds[thread_num];

int turns[thread_num] = ;

#define operation(num) printf("%d ", num)

__thread int count[thread_num] = ;

__thread char buf[1];

__thread int numtoprint;

void* fun(void* arg) 

for (int idx = 0; idx < thread_num; ++idx)

}if ( ++turns[idx] > thread_num)

--count[idx];

++loop;}}

pthread_mutex_unlock(&pmutex);

pthread_cond_broadcast(&pcond);

}return (void*)0;

}

int main() 

}pthread_t tid[thread_num];

for (int i = 0; i < thread_num; ++i)

for (int i = 0; i < thread_num; ++i)

return 0;

}

多執行緒程式設計題

一 當多個執行緒需要協同完成一件事時,可以加鎖 wait,notify一起完成。1.寫兩個執行緒,乙個執行緒列印1 52,另乙個執行緒列印a z,列印順序是12a34b.5152z 思路分析,乙個執行緒列印數字,每次列印兩個數字,26次列印完,另乙個執行緒列印字母,也是26次列印完 可以建立兩個方法...

多執行緒 「等待喚醒」程式設計題

要求 第乙個執行緒 遍歷1 1000所有的數字,在遍歷過程中,如果發現這個數字能同時被2,3,5,7整除,立即wait 等待,讓第二個執行緒進入。第二個執行緒 執行後,將乙個計數器 1,之後再喚醒等待的執行緒。主線程中 休息2秒,讓兩個執行緒全部執行完畢,列印 計數器 的結果。我的 public c...

多執行緒程式設計

1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...