pthread学习

创建一个进程:

int threadfg = -1;

void start_anim()
{

    char a[4]="1234";
    if (threadfg == (pthread_t)-1) {//强制转换,不要立即错了
        if (pthread_create(&threadfg, NULL, myThreadFun, (void*)a)) {//创建线程,函数为myThreadFun,线程描述符threadfg,参数a。操作成功返回0,失败为其他
            threadfg = -1;
            printf("Create animation_thread ERROR!!\n");
        };
    }
}


void myThreadFun(int k)

{

   //while(1){}

   printf("%d\n",k);

}


void stop_anim()
{
        if(threadfg != (pthread_t)-1) {

            pthread_cancel(threadfg);//发终止信号
            pthread_join(threadfg, NULL);//等待线程结束回收空间,关闭线程。正常退出应该是:将线程的while(x)的x改为false,然后pthread_join等待。如果线程出现阻塞这种方法就不好使了。

            //pthread_cancel(threadfg);//=pthread_cancel+pthread_join

            threadfg = -1;
        }
       //do some clean oporation
}


线程是否还活着:int pthread_kill(pthread_t thread, int sig)
返回值:
线程仍然活着:0
线程已不存在:ESRCH
信号不合法:EINVAL


线程锁:

    pthread_mutex_t my_mutex; // 定义

初始化:

    pthread_mutex_init(&my_mutex, NULL);
使用:
    pthread_mutex_lock(&my_mutex);
    ...//作动作,注意:最好不要用其他锁。
    pthread_mutex_unlock(&my_mutex);








你可能感兴趣的:(pthread学习)