| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:请教:多线程的问题?(Linux OS)
只看楼主 加入收藏
mini_peng
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-2
结帖率:0
收藏
已结贴  问题点数:5 回复次数:2 
请教:多线程的问题?(Linux OS)
问题:子线程(void * thread)运行着端口监听程序,且工作正常。但为何主程序里的while(1){.....}只执行一次而不是永久循环下去?(dlog.txt文件中只有一行数据,正常情况下应该有多行才对。)
我的本意是想一个线程执行TCP端口监听并执行接收的指令,而主线程同时在不停地接收数据。两个线程中都有一个while(1){......}。
源码如下:

int main()
{
        pthread_t tid;               
        printf("this is  main thread.\n");
        pthread_create(&tid, NULL, thread, NULL);
        //pthread_join(tid, NULL);
        
        printf("the Server listening......\n");

        while(1)
        {
                //printf("kk\n");
                system("date >> dlog.txt");
                sleep(1000);
        }    //经过测试,只有主线程不结束,子线程才有效。
        
        return 0;

}
//------------------------------------------------

void *thread(void *vargp)
{        
        printf("this is  second thread.\n");
        tcp_svr_Listen_fun();
        
        return NULL;
}
搜索更多相关主题的帖子: thread 多线程 主程序 Linux 
2014-12-21 00:24
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:5 
没看出什么。
但有一点,linux里只有所谓的纤程概念,现在windows里也有但只是为了将linux移植过来而弄得一个东西。
纤程和线程的区别是它并非抢占式,而是程序自己不停的释放cpu资源以达到模拟多线程。具体看你的内核版本,我不知道新版本的linux是否有新特性。
这意味着仅仅是仿多线程,可能出在死循环上,也可能出在函数的各种中断代码。
你需要查询你linux的发行版说明,如果某方面没改动会给你提供内核版本号手册
2014-12-21 15:01
mini_peng
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-2
收藏
得分:0 
谢谢,我用的是MAC   OSX10.9,

不过,你说的 linux只有纤程概念。这个我要查查。我还以为是线程呢。

我运行的程序,在后面看有2个线程。不知是线程还是纤程。

[ 本帖最后由 mini_peng 于 2014-12-21 23:10 编辑 ]
2014-12-21 23:08
快速回复:请教:多线程的问题?(Linux OS)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012556 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved