免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2868 | 回复: 5
上一主题 下一主题

linux线程和进程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-27 21:08 |只看该作者 |倒序浏览
现有这样的一个需求:主线程里面不停的读客户输入。针对不同客户(有很多个客户)的输入,创建子线程做出相应的反应(输入的参数变化而已,处理函数都是相同的)。

线程能做上面的工作吗?也就是说每次创建的线程其实都是一个函数。只不过输入变了而已。

好像进程是挺容易实现的。但是问题是这个输入参数的结构被我搞的比较复杂。有链表指针什么的。进程之间的通讯就比较麻烦了。。。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
2 [报告]
发表于 2011-07-27 21:26 |只看该作者
可以啊~~ 进程传递的参数不一样而已。 或者搞个线程池。

论坛徽章:
0
3 [报告]
发表于 2011-07-27 21:50 |只看该作者
回复 2# crazyhadoop


    我后来是试了下。貌似确实可以啊。可能同步问题。导致输入的参数错误了。下面是测试代码。如果没有sleep(2);这句话,两次创建线程输入的参数i都等于2了。输出结果是
in handler
2 handler!
in handler
2 handler!
坑爹啊...
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <pthread.h>
  4. #include <unistd.h>

  5. void handler(void *arg)
  6. {
  7.         int i;
  8.         i=*((int *)arg);
  9.         printf("in handler\n");
  10.         if(i==1)
  11.         {
  12.                 printf("1 handler!\n");
  13.         }
  14.         else if(i==2)
  15.         {
  16.                 printf("2 handler!\n");
  17.         }
  18.         return ;
  19. }

  20. int main(void)
  21. {
  22.         int i=1;
  23.         pthread_t ntid1,ntid2;
  24.         int retval=0;

  25.         i=1;
  26.         retval=pthread_create(&ntid1,NULL,handler,(void *)&i);
  27.         if(retval<0)
  28.         {
  29.                         perror("create pthread failed!");
  30.                         return retval;
  31.         }
  32.         sleep(2);//如果没有这句则两次输入的参数i都是2
  33.         i=2;
  34.         retval=pthread_create(&ntid1,NULL,(void *)handler,(void *)&i);
  35.         if(retval<0)
  36.         {
  37.                 perror("create pthread failed!");
  38.                 return retval;
  39.         }
  40.         while(1);
  41.         return EXIT_SUCCESS;
  42. }
复制代码

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
4 [报告]
发表于 2011-07-27 22:54 |只看该作者
retval=pthread_create(&ntid1,NULL,(void *)handler,(void *)&i);  你这是 2吧,写错了吧

论坛徽章:
0
5 [报告]
发表于 2011-08-02 08:38 |只看该作者
同意楼上观点

论坛徽章:
0
6
发表于 2011-08-02 16:44
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP