当前位置:  技术问答>linux和unix

GTK网络编程界面老是卡住

    来源: 互联网  发布时间:2016-02-28

    本文导语:  我想编一个网络五子棋的游戏,已经能通信; 但是程序有时能正常运行;有时运行一会,其中一个客户端界面就被卡住; 又有时刚打开客户端还行,一连接到服务器就卡了。 我用了多线程。 哪位高手知道怎么回事...

我想编一个网络五子棋的游戏,已经能通信;
但是程序有时能正常运行;有时运行一会,其中一个客户端界面就被卡住;
又有时刚打开客户端还行,一连接到服务器就卡了。
我用了多线程。
哪位高手知道怎么回事,能帮忙解决一下,谢谢!

|
g_signal_connect(G_OBJECT(button),"clicked",
G_CALLBACK(on_begain),NULL); 

你在这里回调 on_begain,而每次在on_begain里面都会创建线程,这样是不对的,这个线程只要在主函数
里面创建一次就可以了。

我的建议是,在主函数里面就创建一个等待接受对方棋子信息的线程,而不是每次按键都去创建一个线程。

人机对弈没有问题,大概是棋子传送时间很短,感觉不出来,但是网络传输总有延迟,这个时候,你的线程好像没有
起到作用,就是cpu都去处理接受棋子信息,而不去画图了

|
没看你的代码,提点建议不知是否有用:
计算(也就是死循环)不要跟界面(通常是主线程)在同一个线程。
GUI接受用户操作指令,然后发消息给后台的计算线程,然后等候后台线程的计算结果,线程间可以用条件变量同步。

|
是不是程序里有死循环啊? 

|
线程里面使用了sleep 吗

|
1.程序太长,你说用了多线程,但是我没有看到你调用  pthread_create去创建线程。
2。线程里面 在画图之前调用 gdk_threads_enter(); 画完调用 gdk_threads_leave(); 
3.usleep(500);时间太短

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我老是配不好gtk+-2 (redhat8.0下)
  • 关于gtk的目录问题,我的目录是 gtk-2.0/gtk/gtk.h ??
  • 网络技术 iis7站长之家
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK+ gtk_tree问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • [GTK] gtk最小化问题与恢复问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • 大家好,想知道gtk与gtk+有什么区别?
  • 关于GTK中gtk_widget_hide()的问题
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk中如何获取gtk_text_view中的输入内容?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3