关闭

一种多线程的处理方法

324人阅读 评论(0) 收藏 举报

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(), ^{

    [[NSNotificationCenter defaultCenter] postNotificationName:ReceiveDataNotification object:nil userInfo:userInfo];

 });


}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16361次
    • 积分:327
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:25篇
    • 译文:2篇
    • 评论:1条
    最新评论