gpt4 book ai didi

c - gtk+ win32 线程

转载 作者:行者123 更新时间:2023-11-30 14:21:58 24 4
gpt4 key购买 nike

来自http://developer.gnome.org/gdk/unstable/gdk-Threads.html

With the Win32 backend, GDK calls should not be attempted from multiple threads at all.

但是如何避免界面卡住?

例如,我有一个按钮的回调,该按钮从主机获取虚拟机名称并将其逐行添加到树 ListView 。我创建了 pthread 来执行此操作并添加行。

有时 ListView 变得垃圾(某些单元格变成空白),之后所有应用程序的行为都相同(所有对话框等)

由于在WIN32中多线程是不可能的,我该如何模拟它或避免此类问题?

最佳答案

最简单的方法是像您正在做的那样创建一个线程,然后将您想要传递到 GUI 的任何内容添加到全局容器中。然后调用 g_idle_add() 来调度一个函数来读取此容器并更新 GUI;空闲回调将从 GUI 线程调用。

需要注意的两件事:

  1. 在程序初始化时调用 g_thread_init()gdk_thread_init() 以使 glib 线程安全。
  2. 使用互斥锁保护全局容器。

关于c - gtk+ win32 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282748/

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