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

จำนวนเธรดสูงสุดที่สร้างได้ภายในโปรเซสในภาษา C

งานคือหาจำนวนเธรดสูงสุดที่สามารถสร้างได้ภายในโปรเซสในภาษา C

เธรดคือโปรเซสที่เบาและสามารถจัดการได้อย่างอิสระโดยตัวจัดตารางเวลา (scheduler) เนื่องจากเธรดเป็นส่วนประกอบของโปรเซส ดังนั้นจึงสามารถมีเธรดหลายตัวเชื่อมโยงกับโปรเซสเดียวกัน และใช้เวลาน้อยกว่าในการสลับบริบท (context switching) เพราะเบากว่าโปรเซส

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

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

วิธีการที่ใช้ในโปรแกรม

  • สร้างฟังก์ชัน void* create(void *) และเว้นว่างไว้เพราะเพียงแค่สาธิตการทำงานของเธรด
  • ใน main() กำหนดตัวแปร max = 0 และ ret = 0 ทั้งคู่เป็น int เพื่อเก็บจำนวนเธรดสูงสุดและค่าคืน
  • ประกาศตัวแปร "th" เป็น pthread_t
  • รันลูป while ด้วยเงื่อนไข ret == 0 และกำหนด ret = pthread_create(&th, NULL, create, NULL)
  • เพิ่ม max++ ภายในลูป
  • พิมพ์ max นอกลูป

ตัวอย่างโค้ด

#include <pthread.h>
#include <stdio.h>

/* เว้นฟังก์ชันว่างไว้เพราะเพียงแค่สาธิตการทำงานของเธรด */
void *create(void *) {
}

int main() {
    int max = 0, ret = 0;
    pthread_t th;
    // วนจนกว่าจะคืนค่า 0
    while (ret == 0) {
        ret = pthread_create(&th, NULL, create, NULL);
        max++;
    }
    printf(" %d ", max);
    return 0;
}

ผลลัพธ์

5741