【问题标题】:MPQueue - what is it and how do I use it?MPQueue - 它是什么以及如何使用它?
【发布时间】:2010-01-12 00:45:30
【问题描述】:

我遇到了一个让我成功的错误。幸运的是,我在这里找到了一个工作(不需要阅读来回答这个问题)-

http://lists.apple.com/archives/quartz-dev/2009/Oct/msg00088.html

问题是,我不明白这一切。我对事件点击等没问题,但我应该使用 MPQueue '设置一个线程安全队列),向其中添加事件,稍后将它们拉回来。

谁能告诉我 MPQueue 是什么,以及我如何创建一个 - 以及如何添加项目和读取/删除项目? Google 根本没有帮助。

【问题讨论】:

    标签: c multithreading queue macos-carbon core-services


    【解决方案1】:

    我是one of the Multiprocessing Services APIs

    ... [A] 消息队列... 可用于以抢先安全的方式通知(即发送)和等待(即接收)由三个指针大小的值组成的消息。

    【讨论】:

    • 感谢您的链接。阅读文档后,我稍微清楚了一点,但仍然不知道如何创建队列(需要 mpqueueid,或者按照解决方法的建议添加/弹出项目。
    • 创建队列的函数是MPCreateQueue(正如您可能已经猜到的那样)。 MPQueueID 可以让您识别它创建的队列;该函数需要一个指向它应该将 ID 放入其中的变量的指针。 (大多数 Carbon 和 Core Services 函数都是这样工作的,这与 Cocoa 方法的操作方式相反。Carbon 和 Core Services 函数直接返回错误代码并通过引用返回任何其他内容,而 Cocoa 方法直接返回对象或通过引用返回错误对象参考。)
    • 谢谢 - 我现在可以创建队列,但不确定添加和处理事件。看起来它与 MPNotifyQueue 和 MPWaitOnQueue 有关,但我无法从文档中完全概念化该过程。大概有什么东西(可能是一个任务)在钥匙上等待,还有其他东西“通知”它——然后弹出最上面的项目?最佳猜测。
    • 哦,我的意思是还要确认我对您的解释的理解-所以.. MPQueueID queueID = NULL; MPCreateQueue(&queueID);创建队列,并将 ID 存储到 queueID 中?
    • 在这两个方面都是正确的(只要“顶部项目”是指“要放入仍然存在的队列的第一个项目”)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2022-01-10
    • 2015-03-13
    • 2013-10-25
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多