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. 并发过程难以控制

最新文章

  1. 同一AppDomain内的SharpGL的FrameBuffer会相互影响?
  2. unreal 自定义 Slate Style Sets
  3. Java 2D API - 1. 基本概念
  4. Oracle索引(B*tree和Bitmap)学习
  5. CKEDITOR使用与配置
  6. php中将url中的参数含有%20进行转换或解码
  7. iOS学习之C语言内存管理
  8. cocos2d-x CCArray
  9. JavaScript Invalid Date Verify
  10. 瑞柏匡丞:用全局观开发App
  11. Python 修炼1
  12. celery rabbit mq 详解
  13. 配置合适的Visual Studio 2017 开发环境(其它版本的也适用)
  14. 进程&amp;线程&amp;协程
  15. c#程序退出
  16. [整理]JS中的状态机
  17. hive的查询注意事项以及优化总结 .
  18. java 快速求素数
  19. AngularJS 使用序号的表格
  20. php日期时间和时间戳转化

热门文章

  1. MapReduce计算框架的核心编程思想
  2. Elasticsearch从入门到放弃:再聊搜索
  3. 用Graphviz画简单依赖图示例
  4. python 模型的释义
  5. DJANGO-天天生鲜项目从0到1-010-购物车-购物车操作页面(勾选+删改)
  6. js原型、原型链
  7. Ross Girshick讲解如何writing good research papers
  8. 删除表中重复数据,只删除重复数据中ID最小的
  9. MacOS下ElasticSearch学习(第一天)
  10. Checkbutton基本写法