仓颉开发之——多线程(15)
一 概述
- 并发概念
- 创建线程
- 访问线程
- 终止线程
- 同步机制
二 并发概念
- 1-语言线程:又叫仓颉线程、仓颉语言中的线程叫法
- 2-native 线程:类似于其他操作系统+语言的实现线程方式
三 创建线程
3.1 概念
- 关键字spawn+{}内的区域叫做线程
3.2 线程睡眠
指定线程阻塞时长 sleep
主动睡眠一段时间,之后再恢复执行
Duration是枚举,可为毫秒,秒等
func sleep(dur: Duration): Unit
3.3 示例
1 | spawn { => |
四 访问线程
4.1 线程属性
- 仓颉的线程类也叫Thread
- Thread 类主要被用于访问线程的属性信息,例如线程标识等
- thread 无法直接被实例化构造对象
4.2 Future<T> 获取线程返回值
1-概念
- 不使用Future接收并执行,无法保证线程的执行时机
- 使用Future,通过spawn 表达式的返回值,来等待线程执行结束
2-API
- get(): T
- get(ns: Int64): Option<T>
五 终止线程
5.1 概念
- 使用Future<T> 的 cancel() 方法向对应的线程发送终止请求
- 使用 Thread 的 hasPendingCancellation 检查线程是否已终止
5.2 示例
1 | import std.sync.SyncCounter |
六 同步机制
- 原子操作Atomic
- 互斥锁(1-可重入互斥锁 ReentrantMutex、2-Monitor/MultiConditionMonitor、3-synchronized)
- ThreadLocal
七 思维导图
八 参考
- 仓颉官方文档—并发编程
- 仓颉编程语言入门教程