并行处理与中断机制详解
1. 并行处理中的线程与竞争条件
在处理大型项目时,主进程或初始进程可能会生成子进程,也就是线程。当系统加载器启动初始进程并将其放入内存时,操作系统会创建一个新进程,包括所需的操作系统数据结构、内存分配和页面/交换文件分配。线程常被称为轻量级进程,因为它会使用初始进程的分配和地址空间,创建速度更快,终止也更快,因为无需进行内存释放操作。
线程与初始进程及其他线程共享内存,这使得同时执行的线程之间能够实现快速通信,但也要求以内存写入形式进行的通信必须小心协调,以确保结果不被破坏,这种问题被称为竞争条件。
1.1 POSIX线程
POSIX线程(pThreads)是Ubuntu和许多其他操作系统上广泛可用的线程库。在加载过程中会创建初始或主进程,主进程可以使用 pthread_create() 库函数创建额外的线程。虽然创建线程的数量没有具体限制,但可用的CPU核心数量有限,这就对线程数量形成了实际限制。
主进程可以使用 pthread_join() 库函数检查线程是否完成。如果线程未完成,该函数会等待直到线程完成。为了最大化整体并行操作,主进程应在线程执行时执行其他计算,仅在其他工作完成后检查线程是否完成。
; 创建并启动threadFunction0()执行
; pthread_create(&pthreadID0, NULL, &threadFunction0, NULL);
mov rdi, pthreadID0
mov rsi, NULL
mov rd
线程与中断机制解析
超级会员免费看
订阅专栏 解锁全文
1966

被折叠的 条评论
为什么被折叠?



