0

我正在重写现有的实时内核TNKernel;我已经使用它几年了,但我不喜欢它的许多设计决策(以及实现细节),所以我决定分叉它并享受实现我想要的东西的乐趣。任何有兴趣的人都可以在 bitbucket 的项目页面上阅读更多信息。

在我看来,TNKernel 有一个奇怪的特性:它具有tn_task_sleep(int timeout)使当前任务进入睡眠状态的服务,并且具有tn_task_wakeup(struct TN_Task *task)唤醒当前睡眠任务的服务。

奇怪的是,调用tn_task_wakeup()非睡眠任务是合法的;在这种情况下,特殊标志 likewakeup_request将被设置,并且在下一次调用tn_task_sleep()该标志时将被清除,并且任务不会休眠。

在我看来,所有这一切都是一个完全肮脏的 hack,它可能被用作避免竞争条件问题的解决方法,或者作为信号量的 hacky 替代品。

它只是鼓励程序员采用 hacky 方法,而不是创建简单的信号量并提供适当的同步。所以,我愿意从我的项目中删除这项服务。这是摆脱它的好主意,还是我错过了一些重要的事情?为什么我们需要它?

4

1 回答 1

0

由于没有人说我错了,我假设我是对的,并从我的内核中删除了这些奇怪的“功能”。

于 2014-09-29T10:40:04.727 回答