差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
manual:reference:grammar:function:main_page [2023/03/23 17:04] mikecovleemanual:reference:grammar:function:main_page [2023/03/23 17:16] (当前版本) mikecovlee
行 1: 行 1:
 ====== Covariant Script 函数 ====== ====== Covariant Script 函数 ======
-\\ 
- 
 ===== 6.1 定义 ===== ===== 6.1 定义 =====
  
行 45: 行 43:
  
 ===== 6.3 协程(Coroutine) ===== ===== 6.3 协程(Coroutine) =====
 +
 +//要求:210506 或更高语言标准,3.4.2 以上解释器版本//
  
 CovScript 函数可以转换为协程(Coroutine) CovScript 函数可以转换为协程(Coroutine)
行 54: 行 54:
 更进一步说,线程是由调度器进行**抢占式调度**,在多 CPU 系统中会**并行**执行; 更进一步说,线程是由调度器进行**抢占式调度**,在多 CPU 系统中会**并行**执行;
  
-而协程是主动**让出(yield)**时间片,仅运行在单个 CPU 核心上,属于**协作式调度**+而协程是主动**让出yield**时间片,仅运行在单个 CPU 核心上,属于**协作式调度**
  
 CovScript 协程是**堆栈式非对称协程(Stackful Asymmetric Coroutine)**: CovScript 协程是**堆栈式非对称协程(Stackful Asymmetric Coroutine)**:
行 60: 行 60:
   * 非对称式意味着语言运行时不会对协程进行主动调度,需要由协程主动进行调度   * 非对称式意味着语言运行时不会对协程进行主动调度,需要由协程主动进行调度
  
-具体来说,协程相关的 API 可参考 [[manual:reference:package:standard:main_page#解释器上下文环境|解释器上下文环境]] 文档+<code matlab> 
 +function co_func() 
 +    system.out.println("Coroutine started"
 +    context.yield() 
 +    system.out.println("Coroutine resumed"
 +end 
 +var co = context.create_co(co_func) 
 +system.out.println("Launch coroutine"
 +context.resume(co) 
 +system.out.println("Resume coroutine"
 +context.resume(co) 
 +</code> 
 + 
 +这是一个简单的示例命令行会依次输出: 
 + 
 +<code bash> 
 +Launch coroutine 
 +Coroutine started 
 +Resume coroutine 
 +Coroutine resumed 
 +</code> 
 + 
 +更多协程相关的 API 可参考 [[manual:reference:package:standard:main_page#解释器上下文环境|解释器上下文环境]] 文档