4.1
在多线程的进程中,下面的部分是被该进程中的所有线程共享的:
全局变量:全局变量存储在进程的数据段中,对所有线程都是可见的,因此被所有线程共享。
堆内存:堆内存是由进程动态分配和管理的内存区域,对所有线程都是可见的,因此被所有线程共享。
而下面的部分是不被线程共享的:
栈内存:每个线程都有自己独立的栈内存,用于存储局部变量、函数调用信息等,因此不同线程之间的栈内存是相互独立的。
寄存器值:寄存器值是保存在CPU寄存器中的数据,通常是线程私有的,因此不同线程之间的寄存器值是不共享的。
4.2
在子进程中,通过 pthread_create() 创建了一个新的线程,并调用 runner() 函数来执行这个线程。在 runner() 函数中,将 value 的值设置为 5。然后,通过 pthread_join() 等待线程执行完毕。在父进程中,通过 wait(NULL) 等待子进程执行完毕。由于子进程中的线程已经将 value 的值设置为 5,因此在子进程中打印出的 value 的值为 5。而在父进程中,打印出的 value 的值仍然是 0,因为子进程中的 value 改变不会影响父进程中的 value。
4.3
答案并不对,123,23也是错的