写一个GThread的例子
时间: 2024-03-15 08:46:48 浏览: 10
好的,以下是一个简单的 GThread 例子:
```c
#include <glib.h>
void* thread_func(void* data) {
int i;
for (i = 0; i < 10; i++) {
g_print("Thread: %d\n", i);
g_usleep(500000); // sleep for 500ms
}
return NULL;
}
int main() {
GThread* thread;
GError* error = NULL;
// create a new thread
thread = g_thread_try_new("my-thread", thread_func, NULL, &error);
if (thread == NULL) {
g_print("Error creating thread: %s\n", error->message);
g_error_free(error);
return 1;
}
// wait for the thread to finish
g_thread_join(thread);
return 0;
}
```
在这个例子中,我们首先定义了一个函数 `thread_func`,它会在新的线程中运行。该函数会打印出一些信息,并休眠 500 毫秒,然后重复执行 10 次。
接下来,我们在 `main` 函数中创建了一个新的 GThread 对象,使用了 `g_thread_try_new` 函数。这个函数的第一个参数是线程的名称,第二个参数是要运行的函数,第三个参数是函数的参数,最后一个参数是一个指向 GError 的指针,用于返回任何错误信息。
如果线程创建成功,我们就使用 `g_thread_join` 函数等待线程结束。最后,我们返回 0 表示程序正常结束。
注意,在使用 GThread 时,需要在编译时链接 Glib 库。例如,使用以下命令进行编译:
```
gcc -o my-program my-program.c `pkg-config --cflags --libs glib-2.0`
```