如何判断一个函数已经在某一个线程执行过了?或者禁止多次执行某个函数?或者定义某个线程只能执行一次?

prettysky 2003-09-09 04:51:21
我做了一个程序..当鼠标移动到Button上的时候会发声
我用的playsound()函数。。。但是有时候程序会一卡一卡的

所以我把它做成多线程的了,这样是不卡了。。
但是如果快速的把鼠标在Button1 Button2 Button3.....上面移动

这是从任务栏管理器就会看到好多线程有时能达到100。。而且扬声器
也会不停的播放我定义的音乐,就算不再动鼠标也要等好久才不播放音乐
线程也要好久才关闭玩。。


有什么办法解决这个问题吗?

我想的:1;判断一个函数已经在某一个线程执行过了
2;者禁止多次执行某个函数?
3;定义某个线程只能执行一次?


可是都不会,嘻嘻。。还请指教了。
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancedog 2003-09-10
  • 打赏
  • 举报
回复
互质变量,也即信号变量

当绿灯亮时,汽车可以通过;
当红灯亮时,对不起,必须等待,直到绿灯亮时。

抛砖引玉,点到即止
prettysky 2003-09-10
  • 打赏
  • 举报
回复
这就是信号量阿...明白.我以为是什么呢...
谢谢.马上结贴
prettysky 2003-09-10
  • 打赏
  • 举报
回复
还是不太明白...

能在讲详细一点吗
hiflower 2003-09-09
  • 打赏
  • 举报
回复
用信号量,线程在调用此函数前先判断此信号量是否已触发,如果已触发,则不调用,否则触发此信号量并调用函数
CDSoftwareWj 2003-09-09
  • 打赏
  • 举报
回复
放个全局变量不就OK了???!!
hiflower 2003-09-09
  • 打赏
  • 举报
回复
CreateSemaphore ReleaseSemaphore
prettysky 2003-09-09
  • 打赏
  • 举报
回复
楼上的能给我讲讲什么是信号量。。。
怎么用啊?最好给出代码

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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