Computer >> Máy Tính >  >> Lập trình >> lập trình C

Số luồng tối đa có thể được tạo trong một quy trình trong C

Nhiệm vụ được giao là tìm số luồng tối đa có thể được tạo trong một quy trình inC.

Một luồng là một quy trình nhẹ và có thể được quản lý độc lập bởi bộ lập lịch. Bởi vì Athread là một thành phần của một quy trình, do đó nhiều luồng có thể được liên kết trong aprocess và cũng mất ít thời gian hơn để chuyển đổi ngữ cảnh vì nó nhẹ hơn quy trình.

Các luồng yêu cầu ít tài nguyên hơn các quy trình và chúng cũng chia sẻ bộ nhớ với các luồng ngang hàng của nó. Tất cả các luồng ngang hàng cấp người dùng được hệ điều hành coi như một tác vụ duy nhất. Cần ít thời gian hơn để tạo cũng như chấm dứt.

Đầu ra sẽ luôn khác nhau mỗi khi chương trình được thực thi.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Tạo hàm void * create (void *) và để trống vì nó chỉ thể hiện công việc của chuỗi.

  • Trong hàm main (), hãy khởi tạo hai biến max =0 và ret =0, cả hai đều có kiểu int để lưu trữ số luồng tối đa và giá trị trả về tương ứng.

  • Khai báo một biến “th” của kiểu pthread_t.

  • Chạy vòng lặp while với điều kiện ret ==0 và đặt ret =pthread_create (&th, NULL, create, NULL);

  • Lặp lại max ++ bên trong vòng lặp.

  • In tối đa bên ngoài vòng lặp.

Ví dụ

#include<pthread.h>
#include<stdio.h>
/*Leave the function empty as it
only demonstrates work of thread*/
void *create ( void *){
}
//main function
int main(){
   int max = 0, ret = 0;
   pthread_t th;
   //Iterate until 0 is returned
   while (ret == 0){
      ret = pthread_create (&th, NULL, create, NULL);
      max++;
   }
   printf(" %d ", max);
}

Đầu ra

5741