Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

จำนวนเธรดสูงสุดที่สามารถสร้างได้ภายในกระบวนการใน C


ภารกิจคือการค้นหาจำนวนเธรดสูงสุดที่สามารถสร้างได้ภายในกระบวนการ inC

เธรดเป็นกระบวนการที่ไม่ซับซ้อนและสามารถจัดการได้อย่างอิสระโดยตัวจัดกำหนดการ เนื่องจาก athread เป็นส่วนประกอบของกระบวนการ ดังนั้นจึงสามารถเชื่อมโยงหลายเธรดใน aprocess และยังใช้เวลาน้อยกว่าสำหรับการสลับบริบทเนื่องจากมีน้ำหนักเบากว่ากระบวนการ

เธรดต้องการทรัพยากรน้อยกว่ากระบวนการ และยังแชร์หน่วยความจำกับเพียร์เธรดด้วย เพียร์เธรดระดับผู้ใช้ทั้งหมดถือเป็นงานเดียวโดยระบบปฏิบัติการ ใช้เวลาน้อยลงในการสร้างและยุติ

ผลลัพธ์จะแตกต่างกันทุกครั้งที่รันโปรแกรม

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • สร้างฟังก์ชัน void* create(void *) และเว้นว่างไว้ เนื่องจากเป็นการสาธิตการทำงานของเธรดเท่านั้น

  • ในฟังก์ชัน main() เริ่มต้นสองตัวแปร max =0 และ ret =0 ทั้งสองชนิด int เพื่อเก็บจำนวนเธรดสูงสุดและค่าที่ส่งคืนตามลำดับ

  • ประกาศตัวแปร “th” ประเภท pthread_t

  • รัน a while โดยมีเงื่อนไข ret ==0 และใส่ ret =pthread_create (&th,NULL, create, NULL);

  • วนซ้ำ max++ ภายในลูป

  • พิมพ์สูงสุดนอกวง

ตัวอย่าง

#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);
}

ผลลัพธ์

5741