无法在vala中创建线程:`GLib.Thread'没有默认构造函数

时间:2014-11-11 14:06:53

标签: multithreading glib vala

此示例程序无法编译:

public class MyClass 
{
    public bool do_work () {
       message ("OTHER THREAD: %p", (void*)Thread.self ) ;
       return false ;
    }

    public void run () {
        Thread<bool> thread1 = new Thread<bool>.try ("queuejobmanager-thread-1", do_work);
        thread1.join () ;
    }
 }       

int main (string[] args) {

    message ("MAIN THREAD: %p", (void*)Thread.self ) ;
    var item = new MyClass () ;
    item.run () ;
    return 0 ;
}

错误是:

vala-thread.vala:10.36-10.51: error: The name `try' does not exist in the context of `GLib.Thread'
        Thread<bool> thread1 = new Thread<bool>.try ("queuejobmanager-thread-1", do_work);

2 个答案:

答案 0 :(得分:2)

正如the sample中所述,您必须使用选项构建 - target-glib 2.32

完整的构建线是:

valac <your vala file>  --target-glib 2.32 

答案 1 :(得分:0)

这是一个可以自定义的make fill

VALAC=valac
EXEC=runMe
VALAFILES=test.vala test2.vala test3.vala
VALAPKGS=
VALAOPTS=--thread --target-glib=2.32

default:
    $(VALAC) $(VALAFILES) -o $(EXEC) $(VALAPKGS) $(VALAOPTS)

run:
    ./$(EXEC)

clean:
    rm -f *.o pp

输入要在行

中编译的类

VALA FILES = test.vala

然后在bash中执行命令;

  

     

make run