gpt4 book ai didi

objective-c - 是否可以在操作系统或编程语言级别强制执行无共享多线程? (OSX, Objective-C )

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:26 24 4
gpt4 key购买 nike

我正在尝试在 Objective-C 中实现并发的参与者模型,因为我想避免共享可变状态、锁、信号量等臭名昭著的问题。它可以做到,但它需要真正的 避免意外使用共享状态的纪律。

执行无共享规则的一种方法是使用单独的进程而不是单独的线程,但我认为这太过分了并且会产生令人讨厌的开销。我真正想要的是达到同样目的的东西,但以更轻量级的方式。有什么符合这个描述的吗?

最佳答案

遗憾的是,对您的问题的简短回答是“没有任何操作系统设施可以强制执行比进程更轻量级的无共享”。从理论上讲,这对于静态分析工具(如 clang)来说是一个有趣的方向,但我现在还不知道有任何这样的工具。

也就是说,您是否仔细研究过 Grand Central Dispatch(又名 libdispatch)和 block ?

我自己的经验是,GCD 和 block 极大地简化了遵守无共享并发所需的纪律。您在上面提到您“已经熟悉 NSOperation、 block 等”,但我建议真正坐下来探索您可以用它们做什么。此外,在 NSBlockOperation/NSOperationQueue 抽象之上不容易实现的调度 API 有很多可能的模式,所以不要害怕深入研究底层的 libdispatch API。

关于objective-c - 是否可以在操作系统或编程语言级别强制执行无共享多线程? (OSX, Objective-C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306799/

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