首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务管理

任务管理
EN

Stack Overflow用户
提问于 2021-04-09 07:19:06
回答 1查看 34关注 0票数 0

关于任务的几个问题:

所有示例中的

  1. ( Toit部分中的任务)任务都是在app的主部分“创建”的。这是否意味着不能在类中创建任务?我尝试了一下,得到了一个编译错误:

代码语言:javascript
复制
    class Receiver :
      task :: receive
      receive :
        while true :
          sleep --ms=100
          print "inside thread"
    
    ./web.toit:51:8: error: Unexpected token: ::
      task :: receive
           ^~
    ./web.toit:51:3: error: Missing body
      task :: receive
      ^~~~
    Compilation failed.

从示例中可以看出,

  1. 生命周期任务与应用程序本身的生命周期相吻合。在任何情况下,直到我找到一个机会来创建一个任务,运行它,应用暂停/暂停/冻结,恢复,取消/删除任务等等。这些机会是否存在?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-09 08:17:14

您可以在类内创建任务,但您需要在方法中或作为字段初始化器的一部分来完成任务。但是要注意的是,字段初始化器不能访问this,因此没有this方法.

假设您希望在接收类中有一个包含该任务的字段。然后你会想要写:

代码语言:javascript
复制
class Receiver:
  task_ := null

  constructor:
    task_ = task:: receive

  receive:
    while true:
      sleep --ms=100
      print "inside thread"

您可以通过调用任务上的cancel来取消任务。一旦达到屈服点,它就会停止。

目前无法从外部暂停/恢复任务。不过,考虑到您的反馈,我们正在讨论向其添加此功能的可能性。

现在,您可能只需要使用同步原语,就像信号量一样。您可以将其添加到循环的开头。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67016695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档