【问题标题】:Semaphores in .NET compact framework.NET 紧凑框架中的信号量
【发布时间】:2009-11-17 06:12:29
【问题描述】:

不幸的是,在使用 .NET Compact Framework 时,System.Threading 中没有信号量。 我不知道为什么会这样,有人知道吗?

在谷歌上搜索后,我发现很多人提供了他们自己的实现,但没有一个人真的很好用......或者根本没有!

所以我来请教专家了……

有没有人可以为 .NET compact 推荐一个好的信号量类/库 框架?

有什么办法可以模仿这种行为吗?

我有一个典型的生产者/消费者设置,其中线程将对象推送到队列(System.Collections)。 然后我希望消费者线程将对象从队列中拉出并开始工作,但显然只有当队列中有东西可以使用时!

我使用 C# 工作,但只要我可以在 .NET CF 上实现它,我就会采用任何语言的解决方案/伪代码。

【问题讨论】:

    标签: .net multithreading compact-framework semaphore


    【解决方案1】:

    您可以只 PInvoke 到 CreateSemaphore 和 ReleaseSemaphore - 它们在 CE 上的 coredll 中实现。编写一个类似于 System.Threading.Semaphore 的漂亮托管包装器非常容易。

    【讨论】:

    • 我想知道这是否是最好的方法。感谢您的回复
    【解决方案2】:

    我认为OpenNETCF中有一个信号量实现

    【讨论】:

    • 所以有.... :-) 我仍然不知道为什么它没有被包括在内 当然.NET CF 1.0 中缺少很多东西,但我们已经起来了到 3.5 仍然没有信号量。信号量是一个相当核心的进程间通信设备。
    • 告诉我这件事。 M$ 显然不关心 CF 或计划用其他东西替换 WinCE/CF。这是我能想到的唯一理由。包大小的说法是愚蠢的,因为这些天设备有更多的空间,他们总是可以有一个“更完整”的版本或发布这些类型的库作为附加组件。
    • 我同意。 CF一直被严重忽视。 OpenNETCF 是最好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多