首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该在C和GTK+中使用线程来为后门创建图形用户界面控制器吗?

我应该在C和GTK+中使用线程来为后门创建图形用户界面控制器吗?
EN

Stack Overflow用户
提问于 2020-06-23 00:35:13
回答 1查看 48关注 0票数 1

场景:

我用C语言为Linux编写了一个CLI后门和一个CLI控制器。我正在使用Glade和GTK+3为控制器创建一个图形用户界面。我希望控制器(基本上是一个具有反向功能的服务器)始终接受来自后门(具有反向功能的客户端)的连接。同时,我希望将控制器中TextBuffer小部件上编写的命令发送到后门,并将接收到的输出写回后门。

问题1:我应该为此使用线程吗?问题2:如果不是,那么这个问题的最佳解决方案是什么?问题3:我应该使用GDK线程吗?你有什么可以推荐的教程吗?

万分感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 05:16:28

问题1:不需要,您不一定需要线程;尽管根据用例它们可能是有意义的。它们可能会阻止阻止你的UI,或者让你的代码变得过于复杂。还要注意,GTK本身是单线程的。

问题2:基本上,您希望确保您的代码并发运行,但这并不一定意味着并行化,除非您的部分代码将花费一段时间,从而阻塞主线程。GLib是GTK (和许多其他项目)的基库,它提供了一个事件循环,可用于调用和实现异步操作,无论这些操作是否运行在不同的线程中。只要它们通知主线程,就可以在主循环中添加事件。

问题3:根据您的用例到底需要什么,有几个选项:

  • 输入/输出流的一般抽象是GIOStreamGInputStreamGOutputStream分别帮助输入/输出。对于异步方法,可以使用GIOChannel后缀,像g_input_stream_read_async().
  • A这样级别较低,但仍然相对容易使用,它为常见的习惯用法提供了包装器,比如普通的套接字fd。
  • 如果你有一个非常定制的设置,你可以使用一些更底层的东西,比如GSource,它允许你将事件集成到GLib事件循环

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62519246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档