溫馨提示×

怎樣創(chuàng)建高效的linux線程池

小樊
84
2024-07-09 12:25:25

在Linux下創(chuàng)建高效的線程池可以通過使用線程池庫來實(shí)現(xiàn),比如使用pthread庫或者boost庫。下面是一個(gè)簡單的示例代碼演示如何創(chuàng)建一個(gè)基本的線程池:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#define THREAD_POOL_SIZE 5

void* worker(void* arg) {
    int* task = (int*)arg;
    printf("Processing task %d\n", *task);
    // 模擬任務(wù)執(zhí)行
    sleep(1);
    free(task);
    return NULL;
}

int main() {
    pthread_t threads[THREAD_POOL_SIZE];
    int i;
    
    for (i = 0; i < THREAD_POOL_SIZE; i++) {
        pthread_create(&threads[i], NULL, worker, NULL);
    }
    
    // 模擬任務(wù)分配
    for (i = 0; i < 10; i++) {
        int* task = (int*)malloc(sizeof(int));
        *task = i;
        // 簡單的任務(wù)分配策略,將任務(wù)分配給工作線程
        pthread_create(&threads[i % THREAD_POOL_SIZE], NULL, worker, task);
    }
    
    for (i = 0; i < THREAD_POOL_SIZE; i++) {
        pthread_join(threads[i], NULL);
    }
    
    return 0;
}

在這個(gè)示例代碼中,我們創(chuàng)建了一個(gè)包含5個(gè)線程的線程池,然后模擬了任務(wù)分配和任務(wù)執(zhí)行的過程。當(dāng)任務(wù)被分配給某個(gè)線程時(shí),該線程會(huì)執(zhí)行對應(yīng)的任務(wù)并釋放資源。最后我們等待所有線程執(zhí)行完畢后退出程序。

當(dāng)然,實(shí)際的線程池可能需要更復(fù)雜的任務(wù)調(diào)度和管理策略,比如任務(wù)隊(duì)列、線程的動(dòng)態(tài)創(chuàng)建和銷毀等。可以根據(jù)具體的需求和場景來設(shè)計(jì)和實(shí)現(xiàn)更加高效的線程池。

0