C++スレッドプールの詳細


今日の午前中にアリの面接問題を試して、スレッドについての質問をまとめました.
スレッドプールとは?
何をしたの?
1、タスク処理の解決2、ブロックI/O 3の解決、スレッド作成と破棄のコスト問題の解決4、スレッド管理
これだけですか???
ディスクにログを保存するなど(ディスクの速度がかなり遅い)
log("xx-xx-xx%s
"
;//

スレッドプールの非同期デカップリングの役割(ブロックの役割もある)を導入し、書き込みログとディスクの2つのステップを分離します.これもスレッドプールの極めて重要な機能です
いったい何ですか.
例:1、银行営业庁2、食堂の手ブレのおばさん以上で食事をしているおばさんたちが、并んでいる人のために食事をするのが彼女の役目です.食事をする人々はコンピュータの中のたくさんの任務で、渋滞を避けるために、維持して実行して、学校は管理制度があって、この3つの部分、1つのスレッドの池を構成しました.
コンピュータ言語で説明します.構成部分:
1、実行キュー2、タスクキュー3、管理コンポーネント
今日出会った問題は、スレッドプール(上記の3つの構造を含み、オーバーフローを制御できるセキュリティ)をどのように引き裂くかであり、コードを引っ張り始めます.上のコード:
#define LL_ADD(item,list)do{
	item->prev = NULL;
	item->next = list;
	if (list != NULL)//  
		list->prev = item;
	list = item;
}while (0);//       ,       ,    ,            
//      ,    ,   ,         ,           ,   ,     

#define LL_REMOVE(item,list)do{
if(item->prev!=NULL)
	item->prev->next=item->next;
if(item->next!=NULL)
	item->next->prev=item->prev;
//     
}while(0)

struct NWORKER//    
{
	pthread_t thread;
	struct NWORKER* prev;
	struct NWORKER** next;
};

struct NJOB
{
	//    
	void (*func)(struct NJOB* job);
	void* user_data;

	struct NJOB* prev;//         
	struct NJOB* next;
	
};

struct NWANAGER {
	//  
	struct NWORKER *workers;
	struct NJOB* jobs;

	pthread_cond_t_jobs_cond;//      
	pthread_mutex_jobs_muxt;



};