windows服务中开线程的一个问题.

hongkun18 2011-09-13 02:33:47
vs2008 c++windows service工程,在Onstart()种开一个线程,线程体如下:
while(1)
{
}

有一个c#写的应用程序进行socket的连接,该程序与服务程序没任何关系,但c#程序就是socket连接失败;如果在while中
while(1)
{
sleep(1);
}
那么c#程序就可以正常连接。


如何解释阿?
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongkun18 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zwb0540822 的回复:]
我还不太理解“vs2008 c++windows service”的项目,如果做要windows系统服务,那么用win32 API,一般需要做服务安装卸载执行体,三个程序。
但是”vs2008 c++windows service“,是不是只包括服务的执行体,并且这类项目是基于托管CLR的。
[/Quote]
向导包含了服务启动和停止的接口.至于安装和卸载需要加入install控件.
chenjiawei007 2011-09-14
  • 打赏
  • 举报
回复
低优先级的线程,会在执行循环操作时,一直独占CPU。 在windows平台下 需要适时的sleep或者suspend()线程
Lactoferrin 2011-09-13
  • 打赏
  • 举报
回复
UI线程的优先级会在某些时候得到boost,然后慢慢降低
疯魔症 2011-09-13
  • 打赏
  • 举报
回复
我还不太理解“vs2008 c++windows service”的项目,如果做要windows系统服务,那么用win32 API,一般需要做服务安装卸载执行体,三个程序。
但是”vs2008 c++windows service“,是不是只包括服务的执行体,并且这类项目是基于托管CLR的。
shenyi0106 2011-09-13
  • 打赏
  • 举报
回复
那要看优先级的,一般而言启动程序是由explorer来做的,这个进程的优先级比较高,会抢占你的CPU时间
hongkun18 2011-09-13
  • 打赏
  • 举报
回复
也只能这样解释.但如果原因真是这样,那我不能打开其他任何程序才对,因为没有cpu时间.
oyljerry 2011-09-13
  • 打赏
  • 举报
回复
while(1)死循环了,全部占用CPU了,没机会来处理连接请求,所以需要有Sleep来释放CPU时间片
shenyi0106 2011-09-13
  • 打赏
  • 举报
回复
晕啊,是不是CPU都被你开的线程强去了??

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧