我用NSThread创建一个新线程,然后它正在执行thread_funtion,我想取消线程,我用[线程取消],但是线程会继续。
NSThread *thread=[[NSThread alloc] initWithTarget:self selector:@selector(thread_funtion) object:nil];
[thread start];
-(void)thread_funtion
{
//my code
}
我知道在 thread_funtion 中使用标志来控制它的执行,它可能很有用,但它太复杂了。
-(void)thread_funtion
{
if(flag)
{
//some code
}
if(flag)
{
//some code
}
}
那么问题1:如何立即取消线程?</p>
然后我使用另一种方法来创建一个新线程:
pthread_t id;
int ret;
ret=pthread_create(&id,NULL,thread_function,NULL);
if(ret!=0){
printf ("Create pthread error!\n");
exit (1);
}
然后我使用 pthread_cancel(id),线程会立即停止。但是在thread_function中:
void* thread_function(void *arg)
{
//This is not a function of the class, So I can't use self.somobject !
}
所以问题是,在c代码中,如何使用类的对象?