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().