首页 > 编程语言 >C和C++执行线程的写法

C和C++执行线程的写法

时间:2024-07-26 16:55:30浏览次数:11  
标签:std cout threadFunction C++ 线程 include 写法

常见c/C++

#include <windows.h>
#include <iostream>
 
DWORD WINAPI ThreadProc(LPVOID lpParam) {
    std::cout << "线程执行中,参数是: " << (int)lpParam << std::endl;
    return 0;
}
 
int main() {
    HANDLE hThread = CreateThread(
        NULL,                // 默认安全属性
        0,                   // 默认栈大小
        ThreadProc,          // 线程函数指针
        (LPVOID)123,         // 传递给线程函数的参数
        0,                   // 创建标志
        NULL                 // 不需要线程ID
    );
 
    if (hThread == NULL) {
        std::cerr << "CreateThread failed ( " << GetLastError() << " ).\n";
        return 1;
    }
 
    // 等待线程结束,以便主程序可以清理资源
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    return 0;
}

 

C++:

void threadFunction() {
    std::cout << "Thread is running." << std::endl;
}
 
int main() {
    // 创建线程
    auto thread = std::make_unique<std::thread>(threadFunction);
 
    // 等待线程完成
    thread->join();
 
    return 0;
}

 

标签:std,cout,threadFunction,C++,线程,include,写法
From: https://www.cnblogs.com/8335IT/p/18325745

相关文章

  • 线程池
    使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进......
  • C++11特性总汇
    预定义宏211.预定义宏212.__func__宏返回当前所在函数或结构体名字213.#pragmaonce/_Pragma(“once”)该头文件只编译一次214.__VA_ARGS__变长参数宏定义#definePR(...)printf(__VA_ARGS__)215.宽窄字符串的连接支持longlongint类型22.longlongint......
  • 进程和线程的区别到底有哪些,一文带你彻底搞清楚
    进程和线程是现代操作系统中资源管理和任务执行的基本单位。在Linux系统中,进程和线程有着各自的特性和应用场景。理解它们之间的区别,有助于优化应用程序的设计和性能。本文将深入探讨进程和线程的区别,并重点分析它们在Linux系统中的实现和应用。......
  • c++11(4): 模版
    constexpr常量表达式函数:constexprintGetConst(){return1;}1):函数体只能有单一的return返回语句2):函数必须有返回值(不能为void)3):使用前必须已定义,即函数定义写在调用函数前面(放至后面则出错)4):return返回语句表达式中必须是一个常量表达式,且不能是运......
  • C++自学笔记17(const和mutable)
    const在之前的笔记中我们出现很多次constchar*name=“shaojie”,定义一个不可变指针存放字符串。不可变就来自const,表示“只读、常量”为什么需要它呢?我们需要一些东西不可被修改。const加数据变量#include<iostream>intmain(){constintMAX_AGE=99;M......
  • C++自学笔记18(成员初始化列表和初始化对象)
    成员列表初始化创建变量,并将其初始化是创建函数的必要部分。#include<iostream>#include<string>classEntity{private:std::stringm_name;public:Entity(){m_name="nothing"}Entity(conststd::string&name){......
  • C++ primer plus 第16章string 类和标准模板库, 函数符概念
    C++primerplus第16章string类和标准模板库,函数符概念C++primerplus第16章string类和标准模板库,函数符概念文章目录C++primerplus第16章string类和标准模板库,函数符概念16.5.1函数符概念程序清单16.15functor.cpp16.5.1函数符概念正如STL定......
  • C++ primer plus 第16章string 类和标准模板库, 函数对象
    C++primerplus第16章string类和标准模板库,函数对象C++primerplus第16章string类和标准模板库,函数对象文章目录C++primerplus第16章string类和标准模板库,函数对象16.5函数对象16.5函数对象很多STL算法都使用函数对象–也叫函数符(fiunctor)。......
  • 手写线程池
    手写线程池线程池解决的问题是避免线程创建、销毁的代价以及避免线程太多,内存耗尽。GCC编译时,必须通过指令引入线程库。gcc-othreadpoolthreadpool.c-pthread组件开发线程池最基本需要包含三个组件任务队列-添加任务管理组件-管理线程对立以及任务队列执行队列-线程......
  • 当你第一次用C++string的assign会遇到这种情况
    当你第一次用string的assign时,会发现有一点小区别,见以下代码:stringstr1;str1.assign("helloC++");cout<<str1<<endl;stringstr2;str2.assign(str1,5);cout<<str1<<endl;stringstr3;str3.assign("helloC++",5);cout<<......