如何从另一个线程取消 GTK3 线程?

Posted

技术标签:

【中文标题】如何从另一个线程取消 GTK3 线程?【英文标题】:How to cancel GTK3 thread from another thread? 【发布时间】:2019-06-03 20:27:10 【问题描述】:

我有一个图形应用程序,我正在使用 GLib 和 g_thread 函数来创建和操作线程。当我按下“确定”按钮时,我创建了一个执行一些繁重任务的线程。但是我想要另一个名为“取消”的按钮,它允许我随时取消创建的线程。

我正在做一些研究,但找不到任何方法:从另一个不是创建线程的地方终止线程。函数g_thread_exit 只能从线程正在执行的函数中调用。所以我的主要目的是从另一个线程中取消创建的线程,当我点击“取消”按钮时。

也许我必须使用pthread 库,它有一个名为pthread_cancel 的函数可能符合我的期望。

非常感谢您提供任何类型的信息。

【问题讨论】:

【参考方案1】:

您可以在两个线程之间共享一个GCancellable,并让繁重的任务线程在取消时调用g_thread_exit()

使用 GLib 线程确实没有办法直接从另一个线程中止一个线程。

【讨论】:

以上是关于如何从另一个线程取消 GTK3 线程?的主要内容,如果未能解决你的问题,请参考以下文章

如何将调色板图像从另一个线程生成到 WPF UI 线程?

从另一个线程访问线程本地

从另一个线程访问用户会话对象,如何实现?

如何从另一个线程更新 GUI 上的文本框 [重复]

如何从另一个线程更新 GUI?

如何从另一个线程更新 GUI?