C++スレッドプールの詳細
今日の午前中にアリの面接問題を試して、スレッドについての質問をまとめました.
スレッドプールとは?
何をしたの?
1、タスク処理の解決2、ブロックI/O 3の解決、スレッド作成と破棄のコスト問題の解決4、スレッド管理
これだけですか???
ディスクにログを保存するなど(ディスクの速度がかなり遅い)
スレッドプールの非同期デカップリングの役割(ブロックの役割もある)を導入し、書き込みログとディスクの2つのステップを分離します.これもスレッドプールの極めて重要な機能です
いったい何ですか.
例:1、银行営业庁2、食堂の手ブレのおばさん以上で食事をしているおばさんたちが、并んでいる人のために食事をするのが彼女の役目です.食事をする人々はコンピュータの中のたくさんの任務で、渋滞を避けるために、維持して実行して、学校は管理制度があって、この3つの部分、1つのスレッドの池を構成しました.
コンピュータ言語で説明します.構成部分:
1、実行キュー2、タスクキュー3、管理コンポーネント
今日出会った問題は、スレッドプール(上記の3つの構造を含み、オーバーフローを制御できるセキュリティ)をどのように引き裂くかであり、コードを引っ張り始めます.上のコード:
スレッドプールとは?
何をしたの?
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;
};