同步操作的问题,是选线程还是进程

Kali_128 2018-05-08 03:07:20
现在需要跑2个业务,一个是socket业务,一个是查询业务,需要一起跑,用了pthread_create和pthread_detach,发现socket在收数据的时候会阻塞住,想问问需要用什么方法解决这个问题!
...全文
640 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
白色一大坨 2018-05-08
  • 打赏
  • 举报
回复
不知你是怎么搞的,我一般都是用select模型,用select进行判断,如果有数据进入处理,没有就等几秒跳过重新等。
白色一大坨 2018-05-08
  • 打赏
  • 举报
回复
按理说你一个接受数据线程阻塞了,如果并没有数据发过来,那么是很正常的
自信男孩 2018-05-08
  • 打赏
  • 举报
回复
引用 4 楼 tb01024632 的回复:
[quote=引用 1 楼 cfjtaishan 的回复:] 线程和进程都能实现。主要是这两个业务需要那些数据同步,这两个业务的关联在哪
主要是现在只有1个业务在运行,就是想找到问题在哪儿[/quote] 你的socket对端有没有发数据过来呢?
Kali_128 2018-05-08
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
线程和进程都能实现。主要是这两个业务需要那些数据同步,这两个业务的关联在哪
主要是现在只有1个业务在运行,就是想找到问题在哪儿
Kali_128 2018-05-08
  • 打赏
  • 举报
回复
引用 2 楼 phenix2009 的回复:
跟线程进程无关,阻塞是你程序里面写的不合理造成的
INT32 i32Ret;
    pthread_t tPid;
    i32Ret = pthread_create(&tPid, NULL, (void *)socket_Waiting(), NULL);
    if (0 != i32Ret)
    {
        M2M_RTE_LOG(M2M_LOG_ERROR,"create pthread error!\n");
    }


    i32Ret = pthread_detach(tPid);
    
    while(TRUE)
    {
        printf("doing somthing!\n");
        sleep(10);
    }
socket_wait()是用来收发数据的,也有一个while(true)的循环,一直在收发数据,这样会阻塞在首发数据,请问该怎么办,感谢
白色一大坨 2018-05-08
  • 打赏
  • 举报
回复
跟线程进程无关,阻塞是你程序里面写的不合理造成的
自信男孩 2018-05-08
  • 打赏
  • 举报
回复
线程和进程都能实现。主要是这两个业务需要那些数据同步,这两个业务的关联在哪

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧