2013-12-17 98 views
1

我想移動一些報告處理的一個不同的TCL線程除了主線程,因爲當一個報告是非常長的它阻止主應用程序,我有一些C函數,我需要從這個新的線程調用,返回一個需要它的變量。這就是我想要多線程調用函數定義在C從TCL線程

Tcl的代碼做截至目前:

proc pdfthread {} \ 
{ 
    set threadID [thread::create] 
    set result "" //"getAlarmList" is the C function the rest is the parameters 
    thread::send $threadID [list getAlarmList 304 {2013-10-16 15:10:26} {2013-10-16 15:13:00}] result 
    .sumRepTxt insert end "Count = $result\n" //.sumRepTxt is just a text widget 
} 

截至目前,我得到無效的命令名稱「getAlarmList」

+1

你的答案是正確的,但請不要編輯你的答案進入問題。發佈它作爲答案。注意:你可以嘗試'加載{} sample'(沒有文件名)。 –

+0

會做,謝謝 –

回答

2

我想我找到了一種方法來做到這一點,我想新的線程不知道C庫,所以如果我加載庫所在的C函數則其識別命令所以是這樣的:

proc pdfthread {} \ 
{ 
    set threadID [thread::create { 
        load ./samples.so 
        thread::wait}] 
    set result "" 
    thread::send $threadID [list getAlarmList 304 {2013-10-16 15:10:26} {2013-10-16 15:13:00}] result 
    .sumRepTxt insert end "Count = $result\n"