QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

查看: 4412|回复: 0

[C/C++/Qt] Windows 多线程简单示例(C++)

[复制链接]

等级头衔

积分成就    金币 : 2861
   泡泡 : 1516
   精华 : 6 篇
   在线时间 : 1328 小时
   最后登录 : 2026-7-17

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老活跃会员

联系方式
发表于 2023-3-2 10:02:06 | 显示全部楼层 |阅读模式
多线程无参数
- J+ |( p7 H: L, b
// WinThread.cpp : 定义控制台应用程序的入口点。
// Windows 多线程使用

#include "stdafx.h"
using namespace std;

unsigned int  ListenMusic()
{
        for (int i = 0; i < 100; i++)
        {
                        std::cout << "正在听歌" << endl; 
        }
        return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
        std::cout << "正在走路" << endl;
        _beginthread((void (_cdecl *)(void*))ListenMusic,0,nullptr);
        for (int i = 0; i < 20; i++)
        {
                        std::cout << "吹口哨" << endl;
        }

        system("pause");
        return 0;
}
运行结果:
+ l  E. p$ l3 l. W+ ?& G 1.jpg
; E; Q7 ^8 \! W; {- q  a  b多线程有参数' @5 B) V* [+ o7 D, E9 R$ v) P3 O2 p
// MultiThreading.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "MultiThreading.h"

using namespace std;
struct Node
{
        int a;
        int b;
};

void WINAPI  func(Node * cur_node)
{
        for (int i = 0; i < 100 ; i++)
        {
                        cout << cur_node->a << endl;
        }
        cout << "测试"<< endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
        Node * dd = new Node();
        dd->a = 3;
        dd->b = 2;
        HANDLE hHandle =CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)func,dd,NULL,NULL);
        WaitForSingleObject(hHandle,INFINITE); //等待当前线程执行结束
        //CloseHandle(hHandle);
        delete dd;
        system("pause");
        return 0;
}
运行结果:! x2 i2 e$ W$ W- l: L+ J: h
2.jpg % k+ e$ l9 j- z' x4 _, t; H' D
互斥锁使用
( B% |! A: W& K8 H
// ThreadStudy.cpp : 定义控制台应用程序的入口点。
//多线程学习:可以实现异步操作
#include "stdafx.h"
using namespace std;

std::_Mutex cur_mutex;
int WINAPI run(int * n)
{
        cur_mutex._Lock();
        for (int i = 0; i < 5; i++)
        {
                cout << "thread " <<*n << endl;
        }
        cur_mutex._Unlock();
        return 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
        int m = 2;
        int n = 3;
   HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0,(unsigned int (__stdcall *)(void *))run, &m, 0, NULL);
         HANDLE h2Thread = (HANDLE)_beginthreadex(NULL, 0,(unsigned int (__stdcall *)(void *))run, &n, 0, NULL);
        system("pause");
        return 0;
}
运行结果:
  ]' c' v! `. w; Z8 G8 ^7 ^# Z! | 3.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2026-10-14 22:25

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表