社区
进程/线程/DLL
帖子详情
多媒体计时器timesetevent 最多能创建多少个?
haoxihuan
2013-02-25 06:01:50
小弟写一个测试服务器的客户端程序,其中使用timesetevent来创建计时器向服务器发送命令,模拟1000个客户端时,发现创建10多个计时器后,timesetevent就创建失败了。请问各位大侠,timesetevent到底能创建多少个计时器?
...全文
336
5
打赏
收藏
多媒体计时器timesetevent 最多能创建多少个?
小弟写一个测试服务器的客户端程序,其中使用timesetevent来创建计时器向服务器发送命令,模拟1000个客户端时,发现创建10多个计时器后,timesetevent就创建失败了。请问各位大侠,timesetevent到底能创建多少个计时器?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haoxihuan
2013-03-20
打赏
举报
回复
系统资源有限,果断用多线程搞定
fishion
2013-02-25
打赏
举报
回复
应该用多线程
一个傻冒
2013-02-25
打赏
举报
回复
MMRESULT WINAPI timeSetEvent(UINT wDelay, UINT wResol, LPTIMECALLBACK lpFunc, DWORD_PTR dwUser, UINT wFlags) { return TIME_SetEventInternal(wDelay, wResol, lpFunc, dwUser, wFlags); } /************************************************************************** * TIME_SetEventInternal [internal] */ WORD TIME_SetEventInternal(UINT wDelay, UINT wResol, LPTIMECALLBACK lpFunc, DWORD dwUser, UINT wFlags) { WORD wNewID = 0; LPWINE_TIMERENTRY lpNewTimer; LPWINE_TIMERENTRY lpTimer; TRACE("(%u, %u, %p, %08lX, %04X);\n", wDelay, wResol, lpFunc, dwUser, wFlags); if (wDelay < MMSYSTIME_MININTERVAL || wDelay > MMSYSTIME_MAXINTERVAL) return 0; lpNewTimer = HeapAlloc(GetProcessHeap(), 0, sizeof(WINE_TIMERENTRY)); if (lpNewTimer == NULL) return 0; TIME_MMTimeStart(); lpNewTimer->wDelay = wDelay; lpNewTimer->dwTriggerTime = GetTickCount() + wDelay; /* FIXME - wResol is not respected, although it is not clear that we could change our precision meaningfully */ lpNewTimer->wResol = wResol; lpNewTimer->lpFunc = lpFunc; lpNewTimer->dwUser = dwUser; lpNewTimer->wFlags = wFlags; EnterCriticalSection(&WINMM_cs); if ((wFlags & TIME_KILL_SYNCHRONOUS) && !TIME_hKillEvent) TIME_hKillEvent = CreateEventW(NULL, TRUE, TRUE, NULL); for (lpTimer = TIME_TimersList; lpTimer != NULL; lpTimer = lpTimer->lpNext) { wNewID = max(wNewID, lpTimer->wTimerID); } lpNewTimer->lpNext = TIME_TimersList; TIME_TimersList = lpNewTimer; lpNewTimer->wTimerID = wNewID + 1; LeaveCriticalSection(&WINMM_cs); /* Wake the service thread in case there is work to be done */ SetEvent(TIME_hWakeEvent); TRACE("=> %u\n", wNewID + 1); return wNewID + 1; } 这是在ReactOS上的代码。这并不能完全代表windows。但可供兄弟们参考。 似乎看不到有限制。 两处返回,最有可能的是堆分配失败。
孤客天涯
2013-02-25
打赏
举报
回复
同一进程好象是16个
一个傻冒
2013-02-25
打赏
举报
回复
看了下MSDN,似乎没有个数限制。 用LastError看了吗?错误是多少? 1000个线程,会不会是把资源耗尽了?
多媒体
定时器详解
3Windows
多媒体
定时器精确定时方法 Windows
多媒体
定时器通过调用
time
Set
Event
()函数,在回调函数中触发事件消息,通过消息响应函数定义一个仿真帧周期系统执行的任务(定时采样、仿真模型运算、数据发送和接收等),从而完成所需处理的事件。调用
多媒体
定时器的API函数需在头文件中添加mmsy stemh,并将库文件winmmlib添加到工程中。3.1设定定时器分辨率 在使用定时器
高精度ms级定时器:
多媒体
定时器
高精度的ms级定时器,
多媒体
定时器
Windows中的精度定时问题
Windows中的精度定时问题 在Windows中,可以使用不同精度的定时器来满足不同的要求: 1、使用
Time
r组件 它其实是先调用
Set
Time
r()函数建立一个定时器,然后每隔一定的时间向Windows发送一个WM_
TIME
R的消息,操作系统捕获此消息后处理相应的事件。但是由于Windows的定时器是建立在DOS的1CH的中断基础上的,而此中断的响应频率是每秒18.2次,所以T
C#——中自定义高精度
Time
r定时器的实例教程
Time
r 用于以用户定义的事件间隔触发事件。Windows
计时器
是为单线程环境设计的,其中,UI 线程用于执行处理。它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。 使用此
计时器
时,请使用控件的Tick事件执行轮询操作,或在指定的时间内显示启动画面。每当 Enabled 属性设置为true且Interval属性大于0时,将引发Tick事件,引...
C#中自定义高精度
Time
r定时器的实例教程
Time
r 用于以用户定义的事件间隔触发事件。Windows
计时器
是为单线程环境设计的,其中,UI 线程用于执行处理。它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。 使用此
计时器
时,请使用控件的Tick事件执行轮询操作,或在指定的时间内显示启动画面。每当 Enabled 属性设置为true且Interval属性大于0时,将引发Tic...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章