多线程简单实例

线程:

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。

一个标准的线程由线程ID当前指令指针(PC)寄存器集合堆栈组成。

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,
但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现
出间断性。

线程也有就绪、阻塞和运行三种基本状态。

每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中
的程序的调度单位。

在单个程序中同时运行多个线程完成不同的工作,称为多线程

多线程

    具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、
    多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。

代码例:

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

void process(void *p)
{
    int *px = (int *)p;

    char str[10] = { 0 };
    sprintf(str, "线程%d启动", *px); //打印字符串进字符数组

    MessageBoxA(0, str, "多线程实例", 0);
}


void main(void)
{

    for(int i=0; i<5; i++)
    {
        _beginthread(process, 0, &i);
        Sleep(10); //创建线程需要时间,否则出现多个线程创建共用一次循环中的i值
    }

    system("pause");
}

运行结果:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++多线程可以应用于各种场景,以下是一个简单多线程应用实例: 假设我们有一个任务,需要计算一个数组中所有元素的平方和。我们可以使用多线程来加速计算过程。 首先,我们创建一个包含大量元素的数组,并将其分成几个部分。然后,我们创建多个线程,每个线程负责计算其中一部分数组元素的平方和。最后,将每个线程计算得到的结果相加,即可得到整个数组的平方和。 下面是一个简单的示例代码: ```cpp #include <iostream> #include <thread> #include <vector> // 计算数组部分元素的平方和 int calculateSum(const std::vector<int>& arr, int start, int end) { int sum = 0; for (int i = start; i < end; ++i) { sum += arr[i] * arr[i]; } return sum; } int main() { std::vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int numThreads = 4; // 假设使用4个线程 std::vector<std::thread> threads; std::vector<int> partialSums(numThreads); // 创建并启动多个线程 for (int i = 0; i < numThreads; ++i) { int start = i * arr.size() / numThreads; int end = (i + 1) * arr.size() / numThreads; threads.emplace_back([start, end, &arr, &partialSums, i]() { partialSums[i] = calculateSum(arr, start, end); }); } // 等待所有线程完成 for (auto& thread : threads) { thread.join(); } // 计算最终结果 int totalSum = 0; for (int sum : partialSums) { totalSum += sum; } std::cout << "数组的平方和为:" << totalSum << std::endl; return 0; } ``` 在上述示例中,我们使用了`std::thread`来创建多个线程,并使用`std::vector`来保存每个线程计算得到的部分结果。最后,我们将所有部分结果相加得到最终结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值