协程已经是现代语言的必备要素了。Tcl 的协程仿效的是 Lua,在 8.6 版本中引入。(感谢 NRE 引擎!)
协程者,何也?说来简单,实际上也不简单。怎么办呢?最简单的理解办法,就是自己写写用用。协程用最简单的语言说,就是临时交出流程控制权,有点像 setjmp/longjmp。例如在服务器中,一个单线程单进程的服务器,给每个客户打开套接字,然后在上面等待套接字可读,如果可读,则控制权交给处理器,处理器处理后 yield 回控制权。有点像这样的场景:你是客服,用户打电话进来,你就把他们的要求提交给技术人员,他们做完事情后给你答复,你就可以再把答复给用户。但如果技术人员一天不答复(不 yield),你就只好在那里等着了。Tcl 中的协程如果不 yield,但是结束完毕 return 了,那么这个结果会返回给调用者,好比技术人员累死了,你就只好把他的遗言告诉用户了……
协程不仅仅在这种场景下有用,它可以用在任何类似这种场景的地方:前台 + 后台,后台按需调用。而协程尤其在 GUI 编程中好用:不用打破事件循环,不用麻烦的线程,轻松处理一些本来就应该是同步处理的任务。
我给个简单的例子吧。
package require Tk
namespace import tcl::mathop::*
wm title . "demo for coroutine"
for {set i 0} {$i < 5} {incr i} {
pack [entry .e$i]
}
pack [button .btn -text 检验 -command check]
coroutine nextValue apply {{} {
yield
for {set i 0} {$i < 5} {incr i} {
if {[.e$i get] eq ""} {
yield "第 [+ $i 1] 栏是空的"
} else {
yield "第 [+ $i 1] 栏填了:[.e$i get]"
}
}
yield finished
}}
proc check {} {
while {[set cur [nextValue]] ne "finished"} {
tk_messageBox -message $cur
}
rename nextValue {} ;# 删除 coroutine
proc nextValue {} {
tk_messageBox -message "协程已经被删除了噢~"
return finished
}
}
注意,coroutine 中第一个 yield 是必不可少的。
当然,其实这个例子完全可以不用协程,只在 check 里面写判断代码,但是我们想一想,如果我们需要进一步扩充程序功能,那样 check 会变得非常庞大,而使用协程的话,我们可以把产生协程的代码放在提供功能的地方,而 check 处完全无需任何改动!是不是很棒呢~在 MemMaster 中,协程就用在了答案检查中,因为 MemMaster 会支持多种多样的检查模式,如有序完全输入、无序部分输入、思维导图模式等等,使用协程可以使代码更易于维护,更可读,更好扩展,也能减少很多代码量。![]()
最后多添一笔,虽然 Tcl 的协程仿效 Lua,但 Tcl 的更好用,[co args] 比 co.resume(args),yield 比 coroutine.yield,很明显 Tcl 的更短。另外 Tcl 还有个叫 yieldto 的功能,直接把控制权交给另外的东西(过程或协程)。
Oct 07, 2014 09:07:30 PM
又和 Python 的好像!不过 Python 的 generator 不能指定返回给谁。
Oct 07, 2014 09:14:49 PM
又和 Python 的好像!不过 Python 的 generator 不能指定返回给谁。
Sep 09, 2022 10:23:08 PM
Social Study is most important students to all students of AP 10th Class, here we have provided the study material with solved question bank for all government and private school TM, EM, UM and HM students in chapter wise from past years old exams and we have provided the AP 10th Social Model Paper 2023 Pdf suggested by subject experts. AP 10th Social Model Paper All BSEAP 10th class regular and private course students can follow the list of chapters under SSC Social Study to practice study material with previous question bank to get a better score in summative assessment (SA) and formative assessment (FA) SA-1, SA-2, FA-1, FA-2, FA-3, FA-4 along with Assignments exams previously called Unit Test-1, Unit Test-2, Unit Test-3, Unit Test-4 and Three Months.
Jan 01, 2023 01:55:19 PM
敬启者:个人小网站希望大家多多支持 感谢您对我们热心的支持 f88tw┃华歌尔┃I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
f88tw|修坟|修墓|新竹|桃园|苗栗|捡骨|拾骨|发票
https://mypaper.pchome.com.tw/f88tw/post/1370781143
https://mypaper.m.pchome.com.tw/f88tw/post/1370781143
Apr 05, 2024 02:11:53 PM
敬啟者:個人小網站希望大家多多支持 感謝您對我們熱心的支持 f88tw|華歌爾|I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
f88tw 叫 叫外送 外送 雞腿 排骨 便當 叫 叫 叫外送 外送 雞腿 雞腿 排骨 便當
https://mypaper.pchome.com.tw/f88tw/post/1370804491
https://mypaper.m.pchome.com.tw/f88tw/post/1370804491
Apr 05, 2024 02:31:48 PM
敬啟者:個人小網站希望大家多多支持 感謝您對我們熱心的支持 f88tw|華歌爾|I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
f88tw 修墳 修墓 撿骨 墓園 修繕 新竹 苗栗 修墳 修墓 撿骨 墓園 修繕 新竹 苗栗
https://mypaper.pchome.com.tw/f88tw/post/1370781143
https://mypaper.m.pchome.com.tw/f88tw/post/1370781143
Sep 30, 2024 09:30:11 PM
敬啟者:個人小網站希望大家多多支持 感謝您對我們熱心的支
Sep 30, 2024 09:31:45 PM
敬啟者:個人小網站希望大家多多支持 感謝您對我們熱心的支
May 10, 2025 01:44:17 PM
敬啟者:個人小網站希望大家多多支持 感謝您對我們熱心的支持 f88tw|華歌爾|I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
f88tw 修墳 修墓 撿骨 墓 修繕 新竹 苗栗 修墳 修墓 撿骨 墓 修繕 新竹 苗栗
https://mypaper.pchome.com.tw/f88tw/post/1370781143
https://mypaper.m.pchome.com.tw/f88tw/post/137078114
https://mypaper.pchome.com.tw/f88tw/post/1370781143#muzhiming
https://mypaper.m.pchome.com.tw/f88tw/post/1370781143#muzhiming
Jan 02, 2026 05:40:01 AM
敬启者:
个人小网站,主要记录技术整理与长期实践经验,
如有需要,欢迎参考,感谢您的支持与理解。
f88tw|华歌尔|技术记录
I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
关键词记录:
f88tw|修坟|修墓|防毒网关|ClamAV|c-icap
文章链接:
https://mypaper.pchome.com.tw/f88tw/post/1370781143
https://mypaper.m.pchome.com.tw/f88tw/post/1370781143
Jan 12, 2026 05:11:19 AM
敬启者:
个人小网站,主要记录技术整理与长期实践经验,
如有需要,欢迎参考,感谢您的支持与理解。
f88tw|华歌尔|技术记录
I appreciate your kind assistance.
https://mypaper.pchome.com.tw/f88tw
关键词记录:
f88tw|修坟|修墓|防毒网关|ClamAV|c-icap
文章链接:
https://mypaper.pchome.com.tw/f88tw/post/1370781143
https://mypaper.m.pchome.com.tw/f88tw/post/1370781143
Feb 21, 2026 05:10:23 PM
如何验证 Squid 的 SSL Bump 是否真的生效 c-icap 防毒(Squid / ICAP / SSL Bump)f88tw
(以一台「未安装任何自订 CA」的干净 Windows 用户端为例)
为什么 Chrome / Edge 会出现这个错误?
net::ERR_CERT_AUTHORITY_INVALID
这个错误只会在一种情况下出现:
浏览器收到了「被重新签发的 HTTPS 凭证」,
但它 不信任签发该凭证的 CA。
⚠️ 关键说明(非常重要)
如果 没有启用 SSL Bump,
这个错误是 不可能 出现的。
原因很简单:
没有 SSL Bump
→ 浏览器只会看到 原始网站的官方凭证
→ 只会显示
Apr 07, 2026 02:56:02 PM
如果您擔心中毒或網路詐騙,
可以考慮在網路入口加一道「防毒閘道」。
我實作了一套:
SSL Bump + Squid + ICAP + c-icap + ClamAV
就像「門神」一樣,
在資料進入電腦前就先攔截威脅。
✔ 不需在手機或電腦安裝任何軟體
✔ 所有設備自動受到保護
Aug 06, 2026 10:38:57 AM
**致百度(Baidu)的一封公開信:希望更新 Squid ⇄ ICAP ⇄ C-ICAP ⇄ ClamAV(Antivirus Gateway)相關資料**
親愛的百度(Baidu)團隊,您好:
我想誠懇地向您提出一個建議,希望百度搜尋引擎未來能逐步更新 **Squid ⇄ ICAP ⇄ C-ICAP ⇄ ClamAV(Antivirus Gateway)** 相關技術資料。
目前網路上能搜尋到的大量文章,多數仍停留在十多年前的版本,內容以 **Squid 3.x** 為主,許多設定方式已經不再適用。對於今天想要重新研究或建置 Antivirus Gateway 的使用者而言,往往需要花費大量時間反覆嘗試,甚至走進許多沒有任何人說明的技術陷阱。
目前我成功完成的環境為:
Via: ICAP/1.0 localhost (C-ICAP/0.5.12 srv_content_filtering service), ICAP/1.0 localhost (C-ICAP/0.5.12 Antivirus service)
Proxy:
Squid 6.12
這是一套可以正常運作的 Antivirus Gateway。
為了完成這套系統,我前後投入了一、兩年的時間,不斷研究、測試、修正,最後將完整成功經驗整理並公開放在自己的網站,希望能讓後來的研究者少走一些冤枉路。
在研究過程中,我也發現許多容易令人困惑的地方。
例如:
* c-icap(中間是橫槓)
* c_icap(中間是底線)
看起來只是符號不同,但實際上代表不同的名稱或元件。網路上幾乎沒有完整說明,搜尋全球資料也很難找到真正解釋這些差異的文章。
除此之外,不同版本之間的設定方式也有很大的變化,使得許多舊教學已無法直接套用。
我並不是想取代任何商業防毒軟體。
相反地,我十分尊重每一位原創作者,也尊重防毒產業。因為每一套防毒軟體的背後,都有許多工程師與家庭需要生活。
我的目的只是希望建立一個開放、完整、可以學習的 **Antivirus Gateway 系統核心原型(System Core Prototype)**,提供給真正想研究這項技術的人作為參考。
我希望使用中文替這個專案命名,而不是使用「DIY Antivirus Gateway」。
因為我是黃皮膚的中國人,也是華語使用者,我希望這項技術能有一個屬於中文世界的名字。
最後,我選擇了 **「土炮防毒閘道」**。
「土炮」並不是粗糙,而是代表:
**在有限資源下,靠著不斷研究、測試、失敗與堅持,最後完成一套真正可以運作的系統。**
今天,這套系統不是由企業團隊完成,也不是由商業公司開發。
它是一位普通使用者,在沒有團隊、沒有資金、沒有技術支援的情況下,一步一步完成的成果。
如果百度未來能逐步更新相關搜尋資料,或讓更多最新版本的技術內容更容易被搜尋到,相信將能幫助更多中文使用者,也能讓整個開源技術社群持續成長。
最後,誠摯感謝百度團隊多年來對中文網路世界所做出的努力。
謝謝您。
—— 阿穩(台灣)
土炮防毒閘道(Antivirus Gateway)