#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
// ฟังก์ชันสำหรับสร้าง thread
void *threadFunc(void *arg) {
int thread_id = *((int *)arg); // รับค่า id ของ thread
// แสดงผลลัพธ์การทำงานของแต่ละ thread
printf("Thread %d is running...\n", thread_id
);
// รอสักพักเพื่อทำให้ thread ทำงานอยู่เป็นเวลาหนึ่ง
sleep(5);
printf("Thread %d is done.\n", thread_id
);
return NULL; // สิ้นสุดการทำงานของ thread
}
int main() {
int choice;
int thread_id = 0;
pthread_t tid;
while (1) {
// แสดงเมนูให้ผู้ใช้เลือก
printf("Enter your choice: ");
if (choice == 4) {
printf("Exiting program...\n"); break;
}
// สร้าง thread ใหม่เมื่อผู้ใช้เลือกเมนูที่ 1, 2, หรือ 3
if (choice >= 1 && choice <= 3) {
thread_id++;
printf("Creating thread %d...\n", thread_id
); pthread_create(&tid, NULL, threadFunc, &thread_id);
pthread_join(tid, NULL); // รอให้ thread ทำงานเสร็จสิ้นก่อนที่จะดำเนินการต่อ
} else {
printf("Invalid choice. Please enter again.\n"); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8cHRocmVhZC5oPgoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Liq4Lij4LmJ4Liy4LiHIHRocmVhZAp2b2lkICp0aHJlYWRGdW5jKHZvaWQgKmFyZykgewogICAgaW50IHRocmVhZF9pZCA9ICooKGludCAqKWFyZyk7IC8vIOC4o+C4seC4muC4hOC5iOC4siBpZCDguILguK3guIcgdGhyZWFkCgogICAgLy8g4LmB4Liq4LiU4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiB4Liy4Lij4LiX4Liz4LiH4Liy4LiZ4LiC4Lit4LiH4LmB4LiV4LmI4Lil4LiwIHRocmVhZAogICAgcHJpbnRmKCJUaHJlYWQgJWQgaXMgcnVubmluZy4uLlxuIiwgdGhyZWFkX2lkKTsKCiAgICAvLyDguKPguK3guKrguLHguIHguJ7guLHguIHguYDguJ7guLfguYjguK3guJfguLPguYPguKvguYkgdGhyZWFkIOC4l+C4s+C4h+C4suC4meC4reC4ouC4ueC5iOC5gOC4m+C5h+C4meC5gOC4p+C4peC4suC4q+C4meC4tuC5iOC4hwogICAgc2xlZXAoNSk7CgogICAgcHJpbnRmKCJUaHJlYWQgJWQgaXMgZG9uZS5cbiIsIHRocmVhZF9pZCk7CgogICAgcmV0dXJuIE5VTEw7IC8vIOC4quC4tOC5ieC4meC4quC4uOC4lOC4geC4suC4o+C4l+C4s+C4h+C4suC4meC4guC4reC4hyB0aHJlYWQKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgY2hvaWNlOwogICAgaW50IHRocmVhZF9pZCA9IDA7CiAgICBwdGhyZWFkX3QgdGlkOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLy8g4LmB4Liq4LiU4LiH4LmA4Lih4LiZ4Li54LmD4Lir4LmJ4Lic4Li54LmJ4LmD4LiK4LmJ4LmA4Lil4Li34Lit4LiBCiAgICAgICAgcHJpbnRmKCJcbk1lbnU6XG4iKTsKICAgICAgICBwcmludGYoIjEuIFJ1biB0aHJlYWQgMVxuIik7CiAgICAgICAgcHJpbnRmKCIyLiBSdW4gdGhyZWFkIDJcbiIpOwogICAgICAgIHByaW50ZigiMy4gUnVuIHRocmVhZCAzXG4iKTsKICAgICAgICBwcmludGYoIjQuIEV4aXRcbiIpOwogICAgICAgIHByaW50ZigiRW50ZXIgeW91ciBjaG9pY2U6ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZjaG9pY2UpOwoKICAgICAgICBpZiAoY2hvaWNlID09IDQpIHsKICAgICAgICAgICAgcHJpbnRmKCJFeGl0aW5nIHByb2dyYW0uLi5cbiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIC8vIOC4quC4o+C5ieC4suC4hyB0aHJlYWQg4LmD4Lir4Lih4LmI4LmA4Lih4Li34LmI4Lit4Lic4Li54LmJ4LmD4LiK4LmJ4LmA4Lil4Li34Lit4LiB4LmA4Lih4LiZ4Li54LiX4Li14LmIIDEsIDIsIOC4q+C4o+C4t+C4rSAzCiAgICAgICAgaWYgKGNob2ljZSA+PSAxICYmIGNob2ljZSA8PSAzKSB7CiAgICAgICAgICAgIHRocmVhZF9pZCsrOwogICAgICAgICAgICBwcmludGYoIkNyZWF0aW5nIHRocmVhZCAlZC4uLlxuIiwgdGhyZWFkX2lkKTsKICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoJnRpZCwgTlVMTCwgdGhyZWFkRnVuYywgJnRocmVhZF9pZCk7CiAgICAgICAgICAgIHB0aHJlYWRfam9pbih0aWQsIE5VTEwpOyAvLyDguKPguK3guYPguKvguYkgdGhyZWFkIOC4l+C4s+C4h+C4suC4meC5gOC4quC4o+C5h+C4iOC4quC4tOC5ieC4meC4geC5iOC4reC4meC4l+C4teC5iOC4iOC4sOC4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4leC5iOC4rQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigiSW52YWxpZCBjaG9pY2UuIFBsZWFzZSBlbnRlciBhZ2Fpbi5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQ==