线程的基本用法

线程基本概念

1.线程是进程的一个执行单元,CPU的基本调度单位,一个进程可以包括多个线程。
img
2.线程的应用场景: I/O 密集型的任务。

  我之前一直难以理解多线程,后面具体写了代码才渐渐懂了。很多理论的内在逻辑都可以在日常生活中得到具象化体现。
  例子:下图简述了喝茶的步骤。如果在烧水的同时洗茶壶,这样整个过程是不是所用时就缩短了。
img

C++中应用多线程

线程的头文件:

#include <thread>

线程常见的函数

std::thread t1(thread_name);  //启动线程
t1.join()   //等待线程结束
t1.detach() //线程分离
#include <iostream>
#include <thread>

void produce_task()
{
    int number = 10;
    printf("启动 produce 线程 \n ");
    for(int i = 0 ;i < number ; i++ )
    {
        printf("i = %d \n" , i );
    }
}


int main()
{
    std::thread t1(produce_task); //创建线程
    t1.join(); //等待线程结束
    return 0;
}
输出结果:
启动 produce 线程 
i = 0 
i = 1 
i = 2 
i = 3 
i = 4 
i = 5 
i = 6 
i = 7 
i = 8 
i = 9 

C语言中应用多线程

pthread_attr_init():
1.属于 POSIX 线程库(pthread),是 C 语言级别的线程 API
2.主要用于 C 语言开发,也可在 C++ 中调用(需包含 <pthread.h> 并链接线程库)
3.依赖操作系统提供的 POSIX 标准支持(如 Linux、macOS,Windows 需通过 WSL 或第三方库模拟)

#include <pthread.h>

void* thread_func(void* arg) { /* 线程逻辑 */ }

int main() {
    pthread_t tid;
    pthread_attr_t attr;
    
    // 1. 初始化属性对象
    pthread_attr_init(&attr);
    
    // 2. 配置属性(如设置分离状态)
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    
    // 3. 使用属性创建线程
    pthread_create(&tid, &attr, thread_func, NULL);
    
    // 4. 销毁属性对象
    pthread_attr_destroy(&attr);
    
    // 无需 join(),因为线程已分离
    return 0;
}
posted @ 2025-08-17 16:34  开心猪扒  阅读(10)  评论(0)    收藏  举报