第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業(yè)社區(qū)

探索學(xué)習(xí)新天地,共享知識資源!

0 提交作業(yè)
0 布置作業(yè)
0 滿分作業(yè)
得分 100
學(xué)習(xí)任務(wù)

weixin_慕哥3021856 的學(xué)生作業(yè):

#include #include #include #include #include static int number = 0; static int total_of_produce = 0; static int total_of_consume = 0; static bool done = false; // 生產(chǎn)是否完成,默認否 static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond_produce = PTHREAD_COND_INITIALIZER; static pthread_cond_t cond_consume = PTHREAD_COND_INITIALIZER; void *thread_produce(void *arg) { int cnt = atoi((char *)arg); for (int i = 0; i < cnt; i++) { pthread_mutex_lock(&mtx); printf("生產(chǎn)者線程 [%ld] 生產(chǎn)1個產(chǎn)品,產(chǎn)品數(shù)量是 %d\n", pthread_self(), ++number); pthread_mutex_unlock(&mtx); pthread_cond_broadcast(&cond_consume); usleep(1000); } pthread_exit((void *)0); } void *thread_consume(void *arg) { while (1) { pthread_mutex_lock(&mtx); // 當(dāng)產(chǎn)品數(shù)量為0時,阻塞線程并釋放鎖,這里設(shè)置循環(huán)是為了防止沒有重新獲得鎖 while (number == 0 && !done) { pthread_cond_wait(&cond_consume, &mtx); } // 推出循環(huán),結(jié)束線程 if (number == 0 && done) { pthread_mutex_unlock(&mtx); break; } if (number > 0) { total_of_consume++; printf("消費者 [%ld] 消費1個產(chǎn)品,產(chǎn)品數(shù)量是 %d\n", pthread_self(), --number); } pthread_mutex_unlock(&mtx); usleep(1000); } pthread_exit((void *)0); } int main(int argc, const char *argv[]) { int i = 0; int consume = 0, produce = 0; pthread_t tid; if (argc < 2) { fprintf(stderr, "Usage: %s producer1_num producer2_num ...\n", argv[0]); exit(EXIT_FAILURE); } // 創(chuàng)建生產(chǎn)者線程 pthread_t producers[argc-1]; pthread_t consumers[3]; // 3個消費者,固定數(shù)量 for (i = 1; i < argc; i++) { total_of_produce += atoi(argv[i]); produce = pthread_create(&producers[i-1], NULL, thread_produce, (void *)argv[i]); if (produce != 0) { perror("[ERROR] pthread_create()"); exit(EXIT_FAILURE); } } for (i = 0; i < 3; i++) { consume = pthread_create(&consumers[i], NULL, thread_consume, NULL); if (consume != 0) { perror("[ERROR] pthread_create()"); exit(EXIT_FAILURE); } } // 等待所有生產(chǎn)者完成 for (i = 0; i < argc - 1; i++) { pthread_join(producers[i], NULL); } // 設(shè)置生產(chǎn)完成標志,喚醒所有消費者 pthread_mutex_lock(&mtx); done = true; pthread_cond_broadcast(&cond_consume); pthread_mutex_unlock(&mtx); for (i = 0; i < 3; i++) { pthread_join(consumers[i], NULL); } printf("總共生產(chǎn):%d,總共消費:%d\n", total_of_produce, total_of_consume); return 0; } 【圖片】

得分 100
學(xué)習(xí)任務(wù)

weixin_慕哥3021856 的學(xué)生作業(yè):

#include #include #include #include #include #include static int number = 0; static int total_produce_num = 0; static int total_consume_num = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; void *thread_handler(void *arg) { int cnt = atoi((char *)arg); int i = 0; for (i = 0; i < cnt; i++) { pthread_mutex_lock(&mutex); printf("線程 [%ld] 生產(chǎn)1個產(chǎn)品, 產(chǎn)品數(shù)量是 %d\n", pthread_self(), ++number); pthread_mutex_unlock(&mutex); usleep(1000); // 模擬生產(chǎn)耗時 } return NULL; } int main(int argc, const char *argv[]) { int i = 0, err = 0; if (argc < 2) { fprintf(stderr, "Usage: %s producer1_num producer2_num ...\n", argv[0]); exit(EXIT_FAILURE); } // 創(chuàng)建生產(chǎn)者線程 pthread_t producers[argc - 1]; for (i = 1; i < argc; i++) { // 獲取生產(chǎn)數(shù)量的和 total_produce_num += atoi(argv[i]); err = pthread_create(&producers[i-1], NULL, thread_handler, (void *)argv[i]); if (err != 0) { perror("pthread_create()"); exit(EXIT_FAILURE); } } // 消費者 while (total_consume_num < total_produce_num) { pthread_mutex_lock(&mutex); if (number > 0) { printf("消費1個產(chǎn)品,產(chǎn)品數(shù)量是 %d\n", --number); total_consume_num++; } pthread_mutex_unlock(&mutex); usleep(1000); } for (i = 0; i < argc - 1; i++) { pthread_join(producers[i], NULL); } printf("生產(chǎn)總數(shù): %d, 消費總數(shù): %d\n", total_produce_num, total_consume_num); return 0; }

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號