หลังจากนั่งเขียนโค้ดมาหลายวัน วันนี้จะต้องเขียนบางส่วนที่ทำงานโดยใช้เธรด (thread) จึงลองเขียนเล่นๆ นอกโปรเจคก่อน ผลออกมาน่าพอใจทีเดียว แต่ตอนคอมไพล์โปรแกรมต้องเพิ่มออพชันเข้าไปเพื่อให้ g++ รู้ว่ามีการใช้งานมาตรฐาน C++0x และเพิ่ม pthread เข้าไปด้วยมิฉะนั้นจะรันไม่ผ่าน ตัวอย่างโค้ดชื่อ thread.cpp
หลังจากนั้นทดสอบคอมไพล์โปรแกรมแบบไม่เพิ่มไลบรารี pthread ดู จะแสดงข้อผิดพลาดดังด้านล่าง
หากเพิ่มไลบรารี pthread ก็สามารถรันได้
หลังจากทดสอบดูเป็นที่น่าพอใจไม่ต้องเขียน pthread เองให้ยุ่งยาก มี mutex ให้ใช้ด้วยแต่ยังไม่ทดสอบเขียนดูครับ
#include <iostream> #include <thread> using namespace std; class DoWork { public: void operator()(int a, int b){ cout << "hello in thread a is " << a << " b is " << b << endl; } }; void hello_thread(){ cout << "hello from function" << endl; } int main(){ DoWork dw; thread a(dw, 10, 20); thread b(hello_thread); a.join(); b.join(); return 0; }
หลังจากนั้นทดสอบคอมไพล์โปรแกรมแบบไม่เพิ่มไลบรารี pthread ดู จะแสดงข้อผิดพลาดดังด้านล่าง
$ g++ --std=c++0x -o thread thread.cpp $ ./thread terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted
หากเพิ่มไลบรารี pthread ก็สามารถรันได้
$ g++ --std=c++0x -lpthread -o thread thread.cpp $ ./thread hello from function hello in thread a is 10 b is 20
หลังจากทดสอบดูเป็นที่น่าพอใจไม่ต้องเขียน pthread เองให้ยุ่งยาก มี mutex ให้ใช้ด้วยแต่ยังไม่ทดสอบเขียนดูครับ
ความคิดเห็น
แสดงความคิดเห็น