C++ 数据结构算法 学习笔记(9) - 队列及企业级应用 (续2)
队列的企业级应用案例
线程池中的任务队列
线程池 - 由一个任务队列和一组处理队列的线程组成。一旦工作进程需要处理某个可能“阻塞”的 操作,不用自己操作,将其作为一个任务放到线程池的队列,接着会被某个空闲线程提取处理。
代码实现
#include <stdio.h>
#include <assert.h>
#include <Windows.h>
#include <iostream>
#include <iomanip>
using namespace std;
#define MaxSize 1000
typedef struct _QNode {
int id;
void (*handler)(void);
struct _QNode* next;
}QNode;
typedef QNode* QueuePtr;
typedef struct Queue
{
int length;
QueuePtr front;
QueuePtr rear;
}LinkQueue;
QueuePtr thread_task_alloc()
{
QNode* task;
task = (QNode*)calloc(1, sizeof(QNode));
if (task == NULL