我在下面的代码部分中使用了sleep()。然而,令我惊讶的是,我发现首先执行sleep(),然后执行用于打印像素的两行。这意味着,在开始的1秒等待之后,我同时打印出两个像素。但是,我应该得到这样的东西,打印一个像素,然后等待1秒钟,然后打印下一个像素。可能是什么原因?好吧,我正在编写一个X11服务器显示程序。
#include<xlib.h>
#include<sys/time.h>
---------------- other header files
----------------
int main ()
------------variables and few lines of code for X11 graphics
XDrawPoint(.....);
sleep(1);
XDrawPoint(.....);
---------- Few other stuffs
end
答案 0 :(得分:2)
XLib缓冲一些请求(如绘图操作),并仅在必要时刷新此缓冲区。绘制第一个像素后,您可以使用XFlush
。
答案 1 :(得分:1)
请记住,默认情况下,X11是一种异步协议。
因此,请使用XFlush()或激活同步模式。
请参阅http://www.x.org/archive/X11R7.5/doc/man/man3/XFlush.3.html了解XSync命令。用true调用Xsync。
最好的关注