迅雷筆試題:
編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a、b、c,每個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示;如:abcabc….依次遞推。
程式:#include
#include
const
intthread_number = 3;
// 子執行緒的互斥量和條件變數
pthread_mutex_t thread_mutex[thread_number];
pthread_cond_t thread_cond[thread_number];
// 子執行緒是否正在等待
boolthread_wait_flag[thread_number];
// 標識輪到哪個子執行緒輸出其id
pthread_mutex_t mutex;
intthread_turn;
void*thread_func(void*arg);
intmain(intargc,char**argv)
pthread_mutex_init(&mutex, null);
thread_turn = 0;
for(inti = 0; i < thread_number; ++i)
thread_wait_flag[i] =false;
for(inti = 0; i < thread_number; ++i)
for(inti = 0; i < thread_number; ++i)
printf("\n"
);
return0;
}void*thread_func(void*arg)
pthread_mutex_unlock(&thread_mutex[thread_turn]);
}if(count == 10) // 若是第1、2個子執行緒,發出訊號後,退出
break;
}else
// 否則,等待
}return(void*)0;
}
3 Linux多執行緒,執行緒同步
5 執行緒私有資料 程序內的所有執行緒共享程序的資料空間,因此全域性變數為所有執行緒所共有。但有時執行緒也需要儲存自己的私有資料,這時可以建立執行緒私有資料 thread specific date tsd 來解決。例如我們常見的變數 errno 它返回標準的出錯資訊。它顯然不能是乙個區域性變數,幾...
3 Linux多執行緒,執行緒同步
5 執行緒私有資料 程序內的所有執行緒共享程序的資料空間,因此全域性變數為所有執行緒所共有。但有時執行緒也需要儲存自己的私有資料,這時可以建立執行緒私有資料 thread specific date tsd 來解決。例如我們常見的變數 errno 它返回標準的出錯資訊。它顯然不能是乙個區域性變數,幾...
多執行緒(3) 執行緒通訊
執行緒之間的通訊 多個執行緒在處理同乙個資源,但是處理的動作 執行緒的任務 卻不相同。通過一定的手段使各個執行緒能有效的利用資源。而這種手段即 等待喚醒機制。等待喚醒機制所涉及到的方法 wait 等待,將正在執行的執行緒釋放其執行資格 和 執行權,並儲存到執行緒池中。notify 喚醒,喚醒執行緒池...