• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

~纯净~

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

20201302姬正坤Linux第四章学习笔记

第四章 并发编程

一、并行计算导论

1、顺序算法与并行算法

在描述顺序算法中,常用一个begin-end代码块列出算法。该代码块中的所有步骤都是通过某个任务依次执行的。而并行算法中,cobegin-coend代码块指定并行算法的独立任务。每个任务都是并行执行的。

2、并行性与并发性

理想情况下,并行算法中的所有任务应该同时实时执行。单在单CPU系统中,不能实现。因此,不同任务只能并发执行,并在逻辑上并行执行。并发性是通过多任务处理来实现的。

二、线程

1、线程的原理

线程是某进程同一地址空间上的独立执行单元。创建某个进程就是在一个唯一地址空间创建一个主线程。当某进程开始时,就会执行该进程的主线程。如果只有一个主线程,那么进程和线程实际上并没有区别。但是,主线程可能会创建其他线程。每个线程又可以创建更多的线程等。

2、线程的优点

  • 线程创建和切换速度更快;
  • 线程的相应速度更快;
  • 线程更适合并行计算。

3、线程的缺点

  • 由于地址空间共享,线程需要来自用户的明确同步。
  • 许多库函数可能对线程不安全,例如传统 strtok()函数将一个字符串分成一连串令牌。通常,任何使用全局变量或依赖于静态内存内容的函数,线程都不安全。为了使库函数适应线程环境,还需要做大量的工作。
  • 在单 CPU系统上,使用线程解决问题实际上要比使用顺序程序慢,这是由在运行时创建线程和切换上下文的系统开销造成的。

三、线程管理函数

(1)创建线程
int pthread_create(pthread_t *thread_id,pthread_attr_t *attr,void *(*func)(void*), void *arg);
(2)线程ID
int pthread_equal(pthread_t t1,pthread_t t2);如果是不同线程,返回0;否则,返回非0。
(3)线程终止
void pthread_exit(void *status);0退出值表示正常终止,否则为异常终止。
(4)线程连接
int pthread_join (pthread_t thread, void **status ptr);

posted on 2022-10-16 22:51  ~纯净~  阅读(28)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3