![]() |
1
4
这不是那个页面上说的。它说,您将在从中启动进程的同一线程上获得进程终止通知,这表明NSTASK知道线程并尝试做正确的事情。 那个页面的一个编辑器遇到的问题是,他们从一个线程启动了自己的进程,然后让线程终止。这导致了崩溃,因为框架无法再将终止进程的通知传递到正确的线程。 这个 Thread Safety Summary (书签)表示类似的内容,将nstask列在一个类列表中,上面写着:
nstask文档没有对线程进行任何附加说明,因此听起来nstask是__大多数情况下__之一:您可以使用在其上创建的线程中的任务。不要在另一个线程上使用同一个任务,并且(如上所述)确保线程至少与任务进程一样长。
不过,我会注意到,在大多数情况下,不需要在单独的线程上运行任务。独立的进程往往像进程中的其他线程一样在其他处理器上运行,而运行循环在多路复用许多小事件和保持UI响应方面做得很好。你可以使用
NSFileHandle's
另一种选择是,正如eimantas所建议的,使用nsOperation:执行一个操作,该操作只启动一个特定任务,并等待该任务退出(可能同步地从中读取输出)。任务退出时操作完成。 |
![]() |
2
0
是的,可以,但我建议您使用
|
![]() |
Noah H · 如何通过终端或Swift禁用三指轻拍手势? 6 年前 |
![]() |
Dmitry Serov · 货币数字格式-数字为整数时省略分数部分 6 年前 |
![]() |
Duny · ObjC日期始终返回2017年12月25日 6 年前 |
![]() |
Jan Kaiser · NSButton不调用其操作 7 年前 |