在工作线程中将读取的内容放到一个已经定义的缓存区中
解决方案 »
- 这个赋值语句相当于的对吗???
- help! 参数传递问题~~,请各位帮忙!
- 请教键盘上下左右响应问题?
- vc++ 如何使EDIT控件中输入的问题自动换行?
- 我将dataGrid与记录集榜定,m_dataGrid.SetRefDataSource((LPUNKNOWN)pRs),我想在dataGrid中修改,并诸行提交到数据库却不行,请指点,
- 菜鸟求助:关于句柄的问题。请高手多多指教
- MFC CInternetConnection 并发数限制
- 一个MFC程序里面按钮不可以用是为什么
- 对某一dll,客户程序通过气头文件和lib文件来调用与用loadlibrary()方法调用在本质上有何区别?
- TLB 与 LIB 有什么区别
- 插入图片问题
- 现寻找VC/MFC高手,项目外包
我只用过csocket
而csocket好像不能在工作线程中跑
别的方案也有,重叠IO和完成端口就是,初学的时候别搞那么困难
----------------------------
不会吧,不论用Socket类创建的,还是API,都是可以在线程里面运行的。
读出数据迅速开线程是不好的,而应该早就把线程开好了,随时等待读数据比较好(而且这个等待应该是阻塞的 不占cpu),甚至可以开很多线程负荷分担接收数据。
这个很全的
DWORD WINAPI ThreadWork(LPVOID lpParameter)
{
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
if (msg.lParam==FD_ACCEPT)
//Do accept.
if ((msg.lParam==FD_CLOSE)||(msg.lParam==658833440))
//Do close.
if (msg.lParam==FD_READ)
//Do recv.
}
return EXIT_SUCCESS
}
DWORD WINAPI ThreadWork(LPVOID lpParameter)
{
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
if (msg.lParam==FD_ACCEPT)
//Do accept.
if ((msg.lParam==FD_CLOSE)||(msg.lParam==658833440))
//Do close.
if (msg.lParam==FD_READ)
//Do recv.
}
return EXIT_SUCCESS
}----------------------------------------------------
好是好,不过,消耗资源比较大,直接用SetEvent(),效率高。