摘要:
主题链接地址:https://www.cnblogs.com/kele-dad/category/1194627.html 阅读全文
摘要:
40.1 互斥锁 40.1.1 介绍 互斥锁(mutex)是一种简单的加锁的方法来控制对共享资源的访问。 在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行访问。 若其他线程希望上锁一个已经被上了互斥锁的资源,则该线程挂起,直到上锁的线程释放互斥锁为止。 互斥锁的数据类型 阅读全文
摘要:
39.1 概念 线程同步 是一个宏观概念,在微观上包含线程的相互排斥和线程先后执行的约束问题 解决同步方式 条件变量 线程信号量 线程互斥 线程执行的相互排斥 解决互斥的方式 互斥锁 读写锁 线程信号量 是一个宏观概念,在微观上包含线程的相互排斥和线程先后执行的约束问题 解决同步方式 条件变量 线程 阅读全文
摘要:
38.1 线程属性初始化和销毁 返回值:成功返回 0;否则,返回错误编号 线程属性结构如下: 38.2 设置和获得分离属性 detachstate 取值: PTHREAD_CREATE_JOINABLE(默认值) 正常启动线程 必须调用 pthread_join 才能释放线程占有的资源 PTHREA 阅读全文
摘要:
37.1 线程清理和控制函数 函数参数 rtn:清理函数指针 arg:调用清理函数传递的参数 execute:值 1 时,执行线程清理函数;值 0 时,不执行线程清理函数 返回值 成功,返回 0;否则,返回错误编号 触发线程调用清理函数的工作 调用 pthread_exit 响应取消请求 用非零 e 阅读全文
摘要:
36.1 线程介绍 36.1.1 线程的基本概念 进程是资源管理的最小单位,线程是程序执行的最小单位 每个进程都有自己的数据段、代码段和堆栈段。 线程通常叫做轻型的进程,它包含独立的栈和 CPU 寄存器状态,线程是进程的一条执行路径,每个线程共享其所附属进程的所有资源,包括打开的文件、内存页面、信号 阅读全文
摘要:
35.1 内容 在当前的 minishell 中,如果执行 date clear 命令等,minishell 会停止: 这是因为引入进程组的时候,mshell 放置在前台进程组,同时之后在子进程中又创建了一个进程组,在代码中,第二个进程组在没有将其设置为前台进程组之前,一直是后台进程组。那么后台进程 阅读全文
摘要:
31.1 SIGCHLD 信号 子进程状态发生变化(子进程结束)产生该信号,父进程需要使用 wait 调用来等待子进程结束并回收它。 避免僵尸进程 31.2 信号发送 除了内核和超级用户,并不是每个进程都可以向其他的进程发送信号 一般的进程只能向具有相同 uid 和 gid 的进程发送信号,或向相同 阅读全文
摘要:
32.1 不可靠信号问题 发生信号时关联动作被重置为默认设置 信号可能丢失 程序片段 在进入 sig_int 与再次调用 signal 之间发生的 SIGINT 信号将不会捕获 导致进程终止 信号可能丢失 程序片段 在进入 sig_int 与再次调用 signal 之间发生的 SIGINT 信号将不 阅读全文
摘要:
33.1 中断系统调用 进程调用 “慢” 系统调用时,如果发生了信号,内核会重启系统调用。 慢系统调用 可能会永久阻塞的系统调用 从终端设备、管道或网络设备上的文件读取 向上述文件写入 某些设备上的文件打开 pause 和 wait 系统调用 一些设备的 ioctl 操作 一些进程间通信函数 可能会 阅读全文