スレッド
概要
スレッドを実行するスレッドはGlib::Thread::create()を使用して作ることが出来るが、スレッドを作成する前に 一度だけ Glib::thread_init()を実行する必要がある。
スレッドの停止待ちにはGlib::Thread::join()を使う。
ソース
thread.cpp#include <gtkmm.h> #include <iostream> // gettid #include <sys/types.h> #include <linux/unistd.h> _syscall0(pid_t,gettid) void slot_thread() { std::cout << "thread tid = " << gettid() << std::endl; sleep( 2 ); std::cout << "thread stop(" << gettid() << ")" << std::endl; } int main() { // スレッドシステムの初期化 Glib::thread_init(); std::cout << "main tid = " << gettid() << std::endl; Glib::Thread* thread = Glib::Thread::create( sigc::ptr_fun( &slot_thread ), true ); thread->join(); std::cout << "main stop(" << gettid() << ")" << std::endl; }
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。今回はスレッドを 使用しているので pkg-config --libs gthread-2.0 の指定も必要である。g++ thread.cpp -o thread `pkg-config gtkmm-2.4 --cflags --libs` `pkg-config --libs gthread-2.0`
結果
main tid = 27743 thread tid = 27744 thread stop(27744) main stop(27743)