ekd123 发表于 2011-2-21 21:45:00

GThread 基础功能小记

*个人风格严重的编程笔记,不适合入门用,仅适合参考*
*参考或许算不上,大概就是个备忘吧*
*有不懂的或需要详细内容请参考文后给出的_参考文献_*

*基础使用*
首先,要加载使用GThread,调用
g_thread_init (NULL); /* 如果非零,首先确认自己在做什么 */
创建线程,g_thread_create
等待线程,g_thread_join

一般不会需要从外部结束进程,这因为线程不会影响主线程。
要从线程内退出线程也就是个return,不需要什么exit。


*互斥锁*
互斥锁,意思也就是字面意思(翻译的很巧妙呀)。个人认为一种方法也可以实现互斥锁。
gboolean RUNNING = FALSE;


// ------- 现在在线程内
while (RUNNING) sleep(1);
// 处理函数

}

g_mutex_lock和g_mutex_trylock的区别
lock:如果没有锁,锁之;否则,等待另一线程unlock
trylock:一次性动作。如果没有锁,锁之;否则返回错误信息。
如果操作结束,一定要g_mutex_unlock,否则会发生无限等待(我也才懂了互斥锁是什么,虽然这种情况很类似传说中的*死锁*,在自己没搞明白前不敢妄下评论。)。

_参考文献_
GLib Threads API (GNOME Library): http://library.gnome.org/devel/glib/unstable/glib-Threads.html

ekd123 发表于 2011-2-21 22:32:47

格式化+patched版本:
http://ekd123.is-programmer.com/posts/24645

Tom 发表于 2011-2-23 05:10:39

不错~
页: [1]
查看完整版本: GThread 基础功能小记