gpt4 book ai didi

compact-framework - XBox 360 上是否有适用于 XNA 的良好信号量?

转载 作者:行者123 更新时间:2023-12-02 02:35:48 25 4
gpt4 key购买 nike

我正在为 .NET Compact Framework 寻找一种快速高效的信号量实现。在 SO ( Semaphores in .NET compact framework ) 上还有另一个问题,建议使用 P/Invoke,但这在 XBox 360 上运行的 XNA Framework 中是不可能的。

我可以提供我自己的两个实现,但我相信这两个都不是最佳的。

Semaphore using an AutoResetEvent (粘贴)
托管信号量的一种可能实现方式是使用 AutoResetEvent。

在这种情况下,当工作可用时,AutoResetEvent 将仅将一个线程转换为“可运行”状态。当 OS 线程调度程序运行该线程时,它将重新打开 AutoResetEvent,使下一个线程进入“可运行”状态。因此线程将按顺序启动,并且只有在它们的前任实际开始执行之后才会启动。

Semaphore using a ManualResetEvent (粘贴)
另一种可能的实现方式是使用 ManualResetEvent。

在这种情况下,当工作可用时,ManualResetEvent 会将所有线程转换为“可运行”状态。 OS 线程调度程序运行的所有线程都会竞争工作项,直到第一个用完工作的线程再次重置 ManualResetEvent。换句话说,即使不是所有线程都需要,也可能所有线程都会被短时间唤醒。

有没有人知道更好的实现方式或可以提供改进我的建议?

最佳答案

编辑:没关系,只需阅读您引用的其他线程: XBox 的 CF 中是否不包含 Semaphore 类本身?
http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx

否则,这是我在 codeproject 上找到的实现。自己没用过,但或许可以作为引用:-)
http://www.codeproject.com/KB/threads/inprocsemaphore.aspx

关于compact-framework - XBox 360 上是否有适用于 XNA 的良好信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com