标题:window下多线程分时操作问题 新手....
取消只看楼主
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
结帖率:100%
已结贴  问题点数:20 回复次数:1 
window下多线程分时操作问题 新手....
程序代码:
//总共5个进程  主进程输出1  Printer_ThreadOne输出2,3,4  Printer_ThreadTwo输出5
#define WIN32_LEAN_AND_MEAN  

#include <windows.h>       
#include <windowsx.h>       
#include <stdio.h>

// 宏定义 ////////////////////////////////////////////////////////////////////////////////

#define MAX_NUM 3 

// 原型 /////////////////////////////////////////////////////////////////////////////

DWORD WINAPI Printer_ThreadOne(LPVOID data);
DWORD WINAPI printer_ThreadTwo(LPVOID data);

// 函数 //////////////////////////////////////////////////////////////////////////////

DWORD WINAPI Printer_ThreadOne(LPVOID data)
{

for (int index = 0; index < 25; index++)
    {
    printf("one线程%d\n",(int)data+1);  //加一
    Sleep(500);                
    }
   
   return((DWORD)data);
} 




DWORD WINAPI printer_ThreadTwo(LPVOID data)
{
    for(int index = 0; index < 25; index++)
    {
        printf("two线程:%d\n",(int)data+2); //加二
        Sleep(500);
    }
   
    return((DWORD)data);
}

// 主函数 //////////////////////////////////////////////////////////////////////////////////

int main(void)
{

HANDLE thread_handle[MAX_NUM+1];
DWORD  thread_id[MAX_NUM+1]; 



printf("开始线程\n");


//创建3个线程
for (int index = 0; index < MAX_NUM; index++)
    {

    thread_handle[index] = CreateThread(NULL,             
                                        0,               
                                           Printer_ThreadOne,    
                                        (LPVOID)(index+1),    
                                        0,               
                                        &thread_id[index]);
    }
//创建第四的线程

    thread_handle[3] = CreateThread(NULL,             
                                    0,               
                                       printer_ThreadTwo,    
                                    (LPVOID)3,    
                                    0,           
                                    &thread_id[3]);
                                       
                                       
                                       
//主进程////////////////////////////////////////////
for (index=0; index<75; index++)
    {
    printf("主线程%d\n",1);
    Sleep(500);

    }


//关闭句柄///////////////////////////////////////
for (index=0; index<MAX_NUM; index++)
    CloseHandle(thread_handle[index]);
    CloseHandle(thread_handle[    3]);


printf("\n结束了线程\n");

return 0;

}
在输出的时候 按理是循环输出 怎么开始是是乱输出的啊?  在运行了一定时间才循环,那么开始一段时间分时操作是随机选择线程的吗? 还是我的电脑有问题啊?  就高手解答啊. 百度了一下.....未果
搜索更多相关主题的帖子: window 多线程 color 
2012-02-26 20:05
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
得分:0 
小顶一下 .......

能力 技巧
2012-02-26 22:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361681-1-1.html




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

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