Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Số luồng tối đa tạo được trong một tiến trình C

Tìm số luồng (thread) tối đa có thể tạo trong một tiến trình C. Kết quả khác nhau mỗi lần chạy do phụ thuộc hệ thống.

Khái niệm

  • Thread: tiến trình nhẹ, chia sẻ bộ nhớ với các thread ngang hàng
  • Tốn ít tài nguyên hơn process, context switch nhanh hơn
  • Được quản lý độc lập bởi scheduler

Phương pháp

  • Hàm void* create(void*) rỗng (chỉ demo)
  • Vòng lặp while tạo thread bằng pthread_create()
  • Đếm số thread tạo thành công cho đến khi pthread_create trả về khác 0

Chương trình mẫu

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

void *create(void *arg) {
    // Hàm rỗng, chỉ demo việc tạo thread
    return NULL;
}

int main() {
    int max = 0, ret = 0;
    pthread_t th;
    
    while (ret == 0) {
        ret = pthread_create(&th, NULL, create, NULL);
        if (ret == 0) max++;
    }
    
    printf("Số luồng tối đa: %d\n", max);
    return 0;
}

Kết quả mẫu

5741

Lưu ý: Số lượng phụ thuộc OS, cấu hình ulimit, bộ nhớ stack mặc định (thường 8MB/thread). Trên Linux có thể tăng bằng ulimit -s hoặc pthread_attr_setstacksize().