2
我是tcl的新手。我想在tcl中創建一個線程,它應該保持在後臺調用自己。如何在tcl中創建線程8.4
#!/usr/bin/env tclsh
set serPort [open "/dev/ttyS0" RDWR]
fconfigure $serPort -mode 115200,n,8,1 -blocking 0
while { 1 } {
set data [gets $chan]
puts $data
}
我想避免使用上述while循環併爲while循環內的功能創建可重複的線程。基本上,我將我的PC的COM1連接到設備並從設備獲取串行數據。但是如果端口上沒有數據,即使使用「eof」命令,它仍然不會出現循環。這就是我想要創建線程的原因。
我打算使用Tcl_CreateThread爲,但我不明白如何使用它
感謝您的回覆。但是,上面的代碼也給我提供了同樣的問題,即使串行端口上沒有數據,它也不會從事件循環中出來並繼續搜索事件。如果我有一些其他事件需要處理,那麼在串行端口上沒有數據時可能會發生這種情況。總之,上述兩個代碼都會阻止我的系統,並且不允許執行任何操作。你能明白我在這裏說的意思嗎?如果是,請幫助我 – user1497818
不,我不明白你的意思。使用事件循環精確地允許您忘記忙於等待數據:當數據可用時,您設置了一個要調用的命令前綴。您可以在任何給定時間在任意數量的頻道上安裝任意數量的回調。他們不會干涉每一個人。請注意,沒有「搜索事件」這樣的事情。基本上,當你調用'vwait'時,你的代碼將會有效地進入睡眠狀態,並且只有在有回調被註冊的事件時喚醒,並且回調纔會被執行。 – kostix