Glib多线程编程
来源:互联网 发布:网络用语橙汁什么意思 编辑:程序博客网 时间:2024/05/02 01:23
// 线程初始化
void g_thread_init(GThreadFunctions *vtable);
gboolean g_thread_supported(); //检测线程是否被初始化,在程序开始处执行
// joinable设置为TRUE,则可以通过调用g_thread_join来等来线程结束
GThread* g_thread_create(GTreadFunc func, gpinter data,gboolean joinable, GError **error);
GThread* g_thread_self();
void g_thread_exit(gpointer retval);
// 等待线程return或g_thread_exit退出,其返回值是上面exit的参数,或return的返回值
gpointer g_thread_join(GThread* thread);
//加锁机制
GMutex* g_mutex_new();
void g_mutex_lock(GMutex* mutex);
// 尝试加锁,如果mutex已经被加锁,则立即返回FALSE;否则对mutex加锁,并返回TRUE
gboolean g_mutex_trylock(GMutex* mutex);
void g_mutex_unlock(GMutex* mutex);
void g_mutex_free(GMutex* mutex);
#include <glib.h>
static GMutex* mutex = NULL;
void thread_call(gpointer data)
{
gint i = GPOINTER_TO_INT(data);
g_print("%d\n", i);
g_print("Thread %d was created\n", i);
}
int main()
{
gint i;
GThread* thread = NULL;
GError* error = NULL;
GMutex* mutex = NULL;
if (!g_thread_supported())
{
g_thread_init(NULL);
}
mutex = g_mutex_new();
g_mutex_lock(mutex);
for (i = 1; i < 10; i++)
{
thread = g_thread_create((GThreadFunc)thread_call,(gpointer)i, FALSE, &error);
// 留有线程执行时间,便于观察
g_usleep(50);
// thread = g_thread_create((GThreadFunc)thread_call,GINT_TO_POINTER(i), FALSE, NULL);
if (thread == NULL)
{
g_critical("Create thread error: %s\n",error->message);
g_error_free(error);
}
}
g_mutex_unlock(mutex);
g_mutex_free(mutex);
return 0;
}
0 0
- Glib多线程编程
- Glib编程
- glib 编程2-gobject
- glib
- GLib
- Glib
- glib
- glib
- GTK+编程入门(1)—简介与glib库
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- binary was not built with debug information
- C++ bitset类的使用与简介
- 懒人版黑苹果 Yosemite Install(14E46).cdr 安装教程
- Android Studio 的下载及安装
- userInteractionEnabled
- Glib多线程编程
- 多少人知道需求规格说明书是什么
- FusionCharts参数说明——3D饼图属性(Pie3D.swf )
- 使用函数的小细节
- Hibernate学习笔记(九) — Hibernate的查询
- 2016 C语言面试题——字符串函数的实现
- 建立链表和打印链表简单代码
- 一个可以将usb摄像头的视频和麦克风采集的声音以RTMP协议发布到RTMP Server的应用程序
- Hibernate持久化对象的三个状态