免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: SunGod
打印 上一主题 下一主题

一个关于线程的逻辑问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-03-21 16:09 |只看该作者

回复 #6 SunGod 的帖子

:wink: 同一个socket不是thread安全的
但若是不同的socket,应该可以.

论坛徽章:
0
12 [报告]
发表于 2008-03-21 16:12 |只看该作者
原帖由 flw 于 2008-3-21 16:08 发表

看来你还没搞懂堆和栈的区别。


static char raw[1024];

putchar(char * buf, int count){

memcpy(raw,buf,count);

kernel_thread(sendto,0,0);

}

sendto在得到一份raw的副本的同时,raw还是有可能会被改变啊


还不是一样的结果,难道我真的没搞懂

论坛徽章:
0
13 [报告]
发表于 2008-03-21 16:13 |只看该作者
原帖由 system888net 于 2008-3-21 16:09 发表
:wink: 同一个socket不是thread安全的
但若是不同的socket,应该可以.

sendto是自定义函数 里面不一定是对socket的操作

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2008-03-21 16:14 |只看该作者
原帖由 SunGod 于 2008-3-21 16:12 发表


static char raw[1024];

putchar(char * buf, int count){

memcpy(raw,buf,count);

kernel_thread(sendto,0,0);

}

sendto在得到一份raw的副本的同时,raw还是有可能会被改变啊


还不是一 ...

你加个 static 就变成堆了吗?
我吐!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2008-03-21 16:15 |只看该作者
原帖由 SunGod 于 2008-3-21 16:13 发表

sendto是自定义函数 里面不一定是对socket的操作

你咋就喜欢自定义一些和系统函数名字相同的函数呢。
sendto……kernel_thread……

论坛徽章:
0
16 [报告]
发表于 2008-03-21 16:16 |只看该作者

回复 #13 SunGod 的帖子

我晕...

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2008-03-21 16:16 |只看该作者
  1. 81 int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
  2. 82 {
  3. 83     struct pt_regs regs;
  4. 84
  5. 85     memset(&regs, 0, sizeof(regs));
  6. 86
  7. 87     regs.r0 = (unsigned long)arg;
  8. 88     regs.r1 = (unsigned long)fn;
  9. 89     regs.r2 = (unsigned long)do_exit;
  10. 90     regs.lr = (unsigned long)kernel_thread_helper;
  11. 91     regs.pc = (unsigned long)kernel_thread_helper;
  12. 92     regs.sr = MODE_SUPERVISOR;
  13. 93
  14. 94     return do_fork(flags | CLONE_VM | CLONE_UNTRACED,
  15. 95                0, &regs, 0, NULL, NULL);
  16. 96 }
  17. 97 EXPORT_SYMBOL(kernel_thread);
复制代码

论坛徽章:
0
18 [报告]
发表于 2008-03-21 16:18 |只看该作者
原帖由 flw 于 2008-3-21 16:15 发表

你咋就喜欢自定义一些和系统函数名字相同的函数呢。
sendto……kernel_thread……

我这个本来就是内核编程 kernel_thread是内核函数,sendto没有被内核头文件定义,完全可以自定义的


就算static不是在堆里,真要放进堆里难道下场就不一样了么,请flw大虾指教阿

论坛徽章:
0
19 [报告]
发表于 2008-03-21 16:22 |只看该作者
堆是后进先出,栈是先进先出。

了解了,基本功太差啊

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2008-03-21 16:29 |只看该作者
原帖由 SunGod 于 2008-3-21 16:22 发表
堆是后进先出,栈是先进先出。

了解了,基本功太差啊

吐!
我吐!
我再吐!

大侠,你的水平……搞 kernel 编程有点儿屈才啊……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP