我知道 Service Fabric 内的 Actor 是单线程的。但是假设我在 actor 方法内启动一个新线程,那么会发生什么?即使生成的线程仍在执行,actor 也会被停用吗?
根据documentation ,当一个 Actor 一段时间没有被“使用”时,它就会被停用。在这种情况下,“已使用”意味着:
- 接听电话
IRemindable.ReceiveReminderAsync
被调用
看来我启动的新线程没有被考虑在内。但也许有人可以证实这一点?
最佳答案
Actor 只是对象。
Actor 将是 deactivated并且它可用于垃圾收集。
操作系统中的实际线程(运行时)保留 running直到它们完成或终止。可以收集它们的托管表示,但这不会影响实际的线程。
此外,不会以任何方式跟踪 Actor 内部生成的线程,因此您有责任自己管理它们的生命周期。
关于multithreading - 在 Azure Service Fabric actor 内启动线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198980/