gpt4 book ai didi

c - GList(glib-doubly-linked-list)线程安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:29 26 4
gpt4 key购买 nike

在多线程 C 程序中,我使用了 GLib (https://developer.gnome.org/glib/2.35/glib-Doubly-Linked-Lists.html#g-list-append) 的 GList 功能,其中多个线程创建了自己的列表。我观察到不可预知的崩溃,有时是在应用程序加载后立即发生。堆栈跟踪显示 glist_* 函数中的一些崩溃,一些消息如下:

(gdb) bt
#0 0x00007fffeb54a964 in g_slice_alloc () from /lib64/libglib-2.0.so.0
#1 0x00007fffeb52aac6 in g_list_append () from /lib64/libglib-2.0.so.0

或者像这样的消息:

MEMORY-ERROR: [25628]: GSlice: assertion failed: sys_page_size == 0Aborted (core dumped)

(process:15426): GLib-ERROR (recursed) **: gmem.c:157: failed to allocate 137438953456 >bytesaborting...Aborted (core dumped)

我有理由相信 GList 的引入导致了所有这些崩溃。在单线程程序中,我从未见过这些问题。

GList 本身就是线程安全的吗?如果没有,我需要做什么?

最佳答案

你在使用 GThread 吗?:

After calling g_thread_init(), GLib is completely thread safe.

查看this page

关于c - GList(glib-doubly-linked-list)线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16580084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com