| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:多线程问题
只看楼主 加入收藏
袁德凯
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-4-8
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:6 
多线程问题
我正在编写一个游戏辅助程序,但是由于运行速度的问题。我需要进行多线程编程。但是我没有学过多线程的编程 。希望大家帮帮忙。
具体要求如下:
建立5个线程 abcde,其中abcd同步运行,并且最终有int返回值。全部返回后线程e开始运行。
不知道谁能帮我写一个框架。这五个线程的内部具体实现代码我自己写。
搜索更多相关主题的帖子: 多线程 游戏 
2011-08-07 13:34
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:10 
程序代码:
#include <windows.h>
#include <stdio.h>

const int MAX_THREADS = 5;


DWORD __stdcall ThreadProc_1(LPVOID lpParam)
{
    while (1)
    {
        printf("a\n");
        Sleep(1 * 1000);
    }

    return 0;
}

DWORD __stdcall ThreadProc_2(LPVOID lpParam)
{
    while (1)
    {
        printf("b\n");
        Sleep(1 * 1000);
    }

    return 0;
}

DWORD __stdcall ThreadProc_3(LPVOID lpParam)
{
    while (1)
    {
        printf("c\n");   
        Sleep(1 * 1000);
    }

    return 0;
}

DWORD __stdcall ThreadProc_4(LPVOID lpParam)
{
    while (1)
    {
        printf("d\n");   
        Sleep(1 * 1000);
    }

    return 0;
}

DWORD __stdcall ThreadProc(LPVOID lpParam)
{
    HANDLE hThread[MAX_THREADS];

    hThread[0] = CreateThread (NULL, 0, ThreadProc_1, 0, 0, 0);
    hThread[1] = CreateThread (NULL, 0, ThreadProc_2, 0, 0, 0);
    hThread[2] = CreateThread (NULL, 0, ThreadProc_3, 0, 0, 0);
    hThread[3] = CreateThread (NULL, 0, ThreadProc_4, 0, 0, 0);

    DWORD result = WaitForMultipleObjects(MAX_THREADS-1, hThread,TRUE, INFINITE);

    if (result == WAIT_OBJECT_0)
    {
        printf("e\n");
    }

    return 0;
}

int main(void)
{
    ThreadProc((LPVOID)0);

    return 0;
}

基本的框架 就这样子


线程 同步 有 Event  Mutex Timer
自己也可以通过全局的方式 来达到同步  注意线程共享资源就ok
收到的鲜花
  • 袁德凯2011-08-09 10:51 送鲜花  2朵   附言:我很赞同
2011-08-07 15:09
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:5 
多线程百度下就行了
2011-08-08 12:56
袁德凯
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-4-8
收藏
得分:0 
回复 2楼 诸葛修勤
files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(47) : error C2011: “vc_attributes::YesNoMaybe”: “enum”类型重定义
1>        f:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(47) : 参见“vc_attributes::YesNoMaybe”的声明
1>d:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(57) : error C2011: “vc_attributes::AccessType”: “enum”类型重定义
1>        f:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(57) : 参见“vc_attributes::AccessType”的声明
1>d:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(71) : error C2011: “vc_attributes::Pre”: “struct”类型重定义
1>        f:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(71) : 参见“vc_attributes::Pre”的声明
1>d:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(68) : error C3094: “repeatable”: 不允许匿名使用
    不知道为什么我在2008上调试会出错,不过你这个思想很好,对我很有帮助。
    另外我对同一HDC 类型数据用四个线程读取时,读出的数据会出错。我没有加锁,但是我也没有进行写操作。我只是读取其中的数据。不知道你是否知道其中的原因?望能帮忙指教。
2011-08-09 10:47
袁德凯
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-4-8
收藏
得分:0 
回复 3楼 lucky563591
我有百度的,千篇一律,全都用了一个例子。而且用得太一般了。还是这里问比较专业。呵呵。。。。
2011-08-09 10:49
icecream235
Rank: 2
等 级:论坛游民
帖 子:31
专家分:33
注 册:2011-7-9
收藏
得分:5 
多线程编程那里有的学。
2011-08-09 13:32
袁德凯
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-4-8
收藏
得分:0 
回复 6楼 icecream235
JAVA讲多线程的比较多。C++的我没见过,也不知道什么书比较好
2011-08-09 16:31
快速回复:多线程问题
数据加载中...
 
   



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

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