【av68676164(p21-p22)】线程

4.3.1 线程概念

线程的概念(Thread)

  1. 线程是可由CPU直接运行的实体
  2. 一个进程可以创建多个线程
  3. 多个线程可共享CPU可以实现并发运行

CreateThread()

功能:把一个函数创建为一个线程

CreateThread(
    _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
    _In_ SIZE_T dwStackSize,
    _In_ LPTHREAD_START_ROUTINE lpStartAddress,
  // 线程函数的参数
    _In_opt_ __drv_aliasesMem LPVOID lpParameter,
    _In_ DWORD dwCreationFlags,
    _Out_opt_ LPDWORD lpThreadId
    );

单线程程序和多线程程序

单线程程序

整个进程只有一个进程。Windows程序缺省只有一个线程(主线程,main线程)

多线程程序

整个线程至少有2个线程,主线程和一个用户线程

4.3.2 线程典型应用场景

线程技术典型使用场景

  1. 程序的多个功能需要并发执行

    每个功能都创建为一个线程,从而实现多个功能的兵法

  2. 提高窗口程序的交互性

    后台计算的特点:很耗时的函数

关于创建线程的补充说明

  • Win32库创建线程:CreateThread()
  • MFC创建线程:AfxBeginThread()
  • 创建远程线程:CreateRemoteThread()
  • Linux创建线程:pthread_create()

Linux线程

  • POSIX标准p1003.1c定义Linux线程库(Pthreads)

  • 应用特点

      #include <pthreads.h>
    

    pthread_function()

  • 线程的创建pthread_create

    __API_AVAILABLE(macos(10.4), ios(2.0))
    #if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
    int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
    		const pthread_attr_t * _Nullable __restrict,
    		void * _Nullable (* _Nonnull)(void * _Nullable),
    		void * _Nullable __restrict);
    
  • 参数:

    参数 意义
    thread 返回的线程句柄
    attr 指定的线程属性
    ThreadFunction 线程函数的入口地址
    arg 线程函数的参数

使用线程的麻烦

  1. 程序难以条数
  2. 线程安全问题
  3. 并发过程难以控制
posted @ 2020-03-22 22:11  我係死肥宅  阅读(185)  评论(0编辑  收藏  举报