一种多线程的处理方法

来源:互联网 发布:淘宝模特服装拍摄视频 编辑:程序博客网 时间:2024/04/28 09:39

void * startReciveDataThread(void * arg)

{

    startSocket();

    ...

   free(...);

    printf("线程终结\n");

    pthread_exit(0);

}


void socket_start(...){

    //创建接收数据线程

    pthread_t pt1;

    pthread_attr_t attr;

    pthread_attr_init(&attr);

    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

    pthread_create(&pt1, &attr, &startReciveDataThread, NULL);


    

    pthread_mutex_lock(&mutex);

   socket_state(0x00);

   connect = 1;

    pthread_cond_signal(&cond);

    pthread_mutex_unlock(&mutex);

   while (connect)

    {

        ...

receiveData(unsigned char*,int length);

    }

}


void receiveData(unsigned char*,int length){

    //对接收的数据进行处理

    ...

    //处理之后界面显示做相应的变化。

    //注意:界面显示的东西一定要放在主线程中进行处理,否则不能够跳出startReciveDataThread线程,用dispatch_get_main_queue切换到主线程中进行处理

    dispatch_async(dispatch_get_main_queue(), ^{

    [[NSNotificationCenterdefaultCenter]postNotificationName:ReceiveDataNotificationobject:nil userInfo:userInfo];

 });


}

原创粉丝点击