news 2026/6/21 19:18:38

跟我一起学“仓颉”编程语言-多线程练习题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跟我一起学“仓颉”编程语言-多线程练习题

一、练习题

1. 设计四个线程对象,给定两个整数,两个线程执行减操作,两个线程执行加操作,减法操作减到0为止,加法操作加到100为止。

package Study // 导包 import std.sync.* // 加法 var number1 = 0 // 减法 var number2 = 100 // 可重入互斥锁 let mutex = Mutex() // 加法 func add() { while (true) { synchronized (mutex) { if (number1 >= 100) { println("${Thread.currentThread.id}: 已达到上限100, 停止加法操作"); break; } number1++; println("${Thread.currentThread.id}: 加1, number1值=${number1}"); } } } // 减法 func sub() { while (true) { synchronized (mutex) { if (number2 <= 0) { println("${Thread.currentThread.id}: 已达到下限0, 停止减法操作"); break; } number2--; println("${Thread.currentThread.id}: 减1, number2=${number2}"); } } } main () { let future1 = spawn { add() } let future2 = spawn { add() } let future3 = spawn { sub() } let future4 = spawn { sub() } future1.get() future2.get() future3.get() future4.get() }

2. 模拟卖票,有100张票,200个买家,确保所有票都可以被正常卖出(用原子操作实现)。

package Study // 导包 import std.sync.* import std.collection.* // 票数 var ticket = AtomicInt64(100) let list = ArrayList<Future<Unit>>() main () { // 创建200个线程 for (_ in 0..200) { let future = spawn { if (ticket.load() > 0) { ticket.fetchSub(1) println("买家${Thread.currentThread.id}已成功购买一张票, 剩余票数: ${ticket.load()}") } } list.add(future) } for (future in list) { future.get() } println("票已售空") }

3. 模拟卖票,有100张票,200个买家,确保所有票都可以被正常卖出(用多线程通信Semaphore实现)。

package Study // 导包 import std.sync.* import std.collection.* // 票数 var ticket = 100 let semaphore = Semaphore(1) let list = ArrayList<Future<Unit>>() main () { // 创建200个线程 for (_ in 0..200) { let future = spawn { // 获取 semaphore.acquire() if (ticket > 0) { ticket-- println("买家${Thread.currentThread.id}已成功购买一张票, 剩余票数: ${ticket}") } // 释放 semaphore.release() } list.add(future) } for (future in list) { future.get() } println("票已售空") }

二、小结

本章为大家详细的介绍了仓颉编程语言中多线程练习题的内容,下一章,为大家带来宏的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 23:22:16

深入解析EMO-Ai-7b-Q8_0-GGUF模型架构与量化技术原理

深入解析EMO-Ai-7b-Q8_0-GGUF模型架构与量化技术原理 【免费下载链接】EMO-Ai-7b-Q8_0-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/HefeiAicc/EMO-Ai-7b-Q8_0-GGUF EMO-Ai-7b-Q8_0-GGUF是基于Klevin/EMO-Ai-7b基础模型转换而来的GGUF格式量化模型&#xff0c;采…

作者头像 李华
网站建设 2026/6/13 23:22:14

神经渲染:让千年文物在数字世界“活”起来

神经渲染&#xff1a;让千年文物在数字世界“活”起来 引言 当古老的青铜鼎、斑驳的壁画与前沿的人工智能技术相遇&#xff0c;会碰撞出怎样的火花&#xff1f;神经渲染&#xff0c;作为计算机视觉与图形学交叉领域的新星&#xff0c;正悄然改变着文物保护与传承的范式。它不…

作者头像 李华
网站建设 2026/6/14 6:24:13

2026年6月7日 | 蜂群智能体系统理论研究洞察报告

核心观点提要 如果用一句话概括2026年6月第一周至第二周的智能体产业动向&#xff0c;那就是&#xff1a;当安全漏洞从"智能体行为"层面下沉到"智能体运行时基础设施"层面时&#xff0c;市场正在被倒逼出从"Agent安全"到"安全的Agent基础设…

作者头像 李华
网站建设 2026/6/13 14:16:01

企业级工作流引擎与AI代理的挑战及优化

1. 企业级工作流引擎的核心挑战与WoW基准测试 工作流引擎作为企业系统的中枢神经&#xff0c;其复杂程度远超表面所见。在传统认知中&#xff0c;工作流仅仅是按预定顺序执行的任务序列&#xff0c;但真实企业环境中的工作流更像是一个动态的生态系统。以ServiceNow平台为例&am…

作者头像 李华
网站建设 2026/6/16 10:14:36

没有嘉宾怎么做访谈视频?5款虚拟访谈节目批量制作工具实测

没有嘉宾时的访谈节目产能瓶颈很多知识博主、MCN机构和播客团队都想做对谈类内容&#xff0c;但凑齐多位嘉宾的时间与场地成本极高。寻找一款高效的虚拟访谈节目批量制作工具&#xff0c;成为突破产能瓶颈的核心。传统做法是找素材拼接或单人分饰多角&#xff0c;但画面割裂且容…

作者头像 李华