阅读背景:

【那些年遇到过的面试题】pthread_cancel

来源:互联网 
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>


static int counter = 0;


void *thread_routine(void *arg)
{
	printf("enter thread routine!\n");
	for(counter = 0; ; counter++)
	{
		if((counter % 1000) == 0)
		{
			printf("testcancel\n");
			pthread_testcancel();
			printf("111111testcancel\n");
		}
	}
}

int main(int argc, char *argv[])
{
	pthread_t thread;
	void *result;
	int status;

	status = pthread_create(&thread, NULL, thread_routine, NULL);	

	printf("calling pthread_cancel\n");
	status = pthread_cancel(thread);
	printf("calling pthread_join\n");
	status = pthread_join(thread, &result);
	if(result == PTHREAD_CANCELED)
	{
		printf("Thread canceled at %d\n", counter);
	}
	sleep(1);
	return 0;
}#include <pthread.h>
#include <stdio.h>
#in



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: