| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1175 人关注过本帖
标题:为什么重复打印信息
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
已结贴  问题点数:10 回复次数:12 
为什么重复打印信息
程序代码:
int main(int argc, char **argv)
{
    GetMode(&g_iMode, argc, argv);

    if (g_iMode == SERVER_MODE) // host 端
    {
        COMM_CreateServer("any", 0, ST_COMM_TestServer_EntryFunc, 2, COMM_TYPE_TCP);
        printf("sakdja\n");
        //while (TRUE);
    }
        
        ......
}
我程序中使用COMM_CreateServer创建一个 ST_COMM_TestServer_EntryFunc 线程时为什么重复打印 printf("sakdja\n");??
但是后面加上 while (TRUE); 后就不会重复打印?
搜索更多相关主题的帖子: 打印 
2010-07-02 08:01
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
程序代码:
#include <windows.h>
#include <stdio.h>
#include "u_task.h"
HANDLE test_entry_func(char *name)
{
    printf("%s\n", name);
    Sleep(1000);
    while(TRUE)
    {
        printf("%s, %d\n", __FILE__, __LINE__);
        Sleep(500);
    }
}

int main(int argc, char **argv)
{
    UINT32 ret;
    ret = TASK_CreateThread(NULL, NULL, test_entry_func, "zhong");
    printf("sakdja\n");
    //Sleep(5000);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-03 00:29
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
程序代码:
int main(int argc, char **argv)
{
    UINT32 ret;
    ret = TASK_CreateThread(NULL, NULL, test_entry_func, "zhong");
    ret += 100;
    printf("sakdja %d\n", ret);
    Sleep(100);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


感觉多显示的 sakdja 100仅仅是printf函数处理出错,因为这个 ret 值仅仅被 ret += 100; 加过一次而已

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-03 00:34
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
我也看不出什么地方出了问题?
应该是处理出错,但是如果是出错的话,应该是会报错的才对啊。???

帮你置顶几天。

南国利剑
2010-07-03 03:22
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
看看u_task.h

★★★★★为人民服务★★★★★
2010-07-03 16:50
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
以下是引用cnfarer在2010-7-3 16:50:29的发言:

看看u_task.h
程序代码:
UINT32 TASK_CreateThread(UINT32 *p_thread_id, void *attrib, void *entry_func, void *arg)
{
      return !(UINT32)CreateThread((LPSECURITY_ATTRIBUTES)attrib, TASK_STACK_SIZE,    \
                                  (LPTHREAD_START_ROUTINE)entry_func, arg, 0, (LPDWORD)p_thread_id);
}   
TASK_CreateThread 仅仅简单的封装下CreateThread函数,创建一个子线程而已。

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-03 23:00
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:9 
弱弱地问一句。。。。代码是在多线程的环境下运行的?~~~~记得好像*****~~~~~
2010-07-04 00:55
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 7楼 lijm1989
多线程的环境 什么意思?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-04 01:38
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:1 
是用VC6么?
如果是的话,看看在Setting那里的C/C++选项中的Category中的Code Generation,你的Use run-time library的选项是什么。
如果用的是高版本的话,54掉我说的···
2010-07-04 02:18
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
以下是引用lijm1989在2010-7-4 02:18:57的发言:

是用VC6么?
如果是的话,看看在Setting那里的C/C++选项中的Category中的Code Generation,你的Use run-time library的选项是什么。
如果用的是高版本的话,54掉我说的···
哇,真是您说的问题

现在选择多线程了,这个问题就没有了

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-04 03:28
快速回复:为什么重复打印信息
数据加载中...
 
   



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

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