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