一种多线程的处理方法

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值