ภารกิจคือการค้นหาจำนวนเธรดสูงสุดที่สามารถสร้างได้ภายในกระบวนการ 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