多线程调用函数在C中从一个tcl线程定义

时间:2013-12-17 20:30:03

标签: c multithreading tcl

我正在尝试将一些报告的处理移动到除主线程之外的不同tcl线程,因为当报告很长时它会停止主应用程序,我有一些C函数需要从这个调用返回需要它的变量的新线程。这就是我现在正在尝试做的事情

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 个答案:

答案 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"