【发布时间】:2018-01-08 19:14:43
【问题描述】:
我发现的典型 GLib.Thread 示例是一种类型:
new Thread<void*>(null,() => { return null; };
这在不向线程传递参数时效果很好。
GLib.Thread 文档展示了一个使用类实例提供线程数据的示例。
// Start a thread:
MyThread my_thread = new MyThread (10);
Thread<int> thread = new Thread<int>.try ("My fst. thread", my_thread.run);
这是向线程传递参数的唯一方法吗?文档还说:
新线程通过使用参数数据调用 func 开始。数据:
提供给新线程的参数。
参数数据在哪里指定以及如何在线程中访问它?
例如,想象一下这个回调签名:
private string cbThreadSample(int id,string msg, Socket client_socket){
//...do stuff
return "good job";
}
我的使用想法是这样的:
new GLib.Thread<string>("my thread sample",this.cbThreadSample,id,msg, client_socket);
显然这不会编译。使用此回调签名创建线程的正确方法是什么?
【问题讨论】:
标签: vala