今天在调试函数的时候,做了两个线程,一个线程用来发送消息,一个线程用来接收消息并将消息输出到文件。
可是,在函数执行的时候发现,发送线程线程创建成功,但是却总是不能执行到线程内。一头雾水,检查半天才发现,原来是main()函数中只创建了两个线程,线程创建成功即返回,根本没有线程执行的时间!
修改的方法很简单在main()函数return之前Suspendthread(Getcurrentthread())就可以了。
还有一个问题就是,接收函数接收消息后存储到文件中,最后的几条消息用fprintf()却没有保存到文件中。原因是系统先将其放入缓存中,以致最后的消息总是不能写到文件,最后的解决方法是在fprintf()函数后加fflush()。对于某些函数现将输出存到缓存里的情况也可以使用。