页次: 1
根据查阅的资料,要想终止线程,似乎要使用 pthread_cancel ,然而这个接口只是发送一个信号,而不是真正的立即终止线程的执行,只有当线程运行到取消点的时候,才会响应到这个信号,停止执行。
我的疑惑是,如果是这样根据埋点去调度线程,那么如果进入了一个 cpu 密集函数调用,岂不是根本就没机会终止它的执行吗?如果调用了第三方接口,没办法控制里面的埋点的时候,不也是一样没办法终止它的执行吗?就好像是明明知道耗时的地方在哪里,但就是没法及时终止它,终止的意义又在哪里呢?
我想进程的调度应该不是这个样子的吧,不然程序忙起来了,停都停不掉。为啥线程不能想进程一样调度呢?
另外去看了下 java 的 Thread ,其中的 interrupt 方法有点 pthread_cancel 的味道;同时它还提供了一个 stop 方法,这个方法是立即终止线程,虽然已经废弃,但是我还是好奇,它的底层在 linux 下面不还是一个 pthread 吗,pthread 都没有相关的接口,java 又是怎么实现的呢。
最近编辑记录 xiao80 (2023-08-31 22:51:20)
离线
pthread_kill
离线
pthread_kill
哎,网上的东西也真是一言难尽,搜到的全是 pthread_cancel ,就没见着 pthread_kill 。
离线
所以直接 man pthread<tab> 就好啦。
离线
所以直接 man pthread<tab> 就好啦。
顺便再请教一下,arch 里那些常用 c 函数库的文档一般在什么样的包里呢?
之前在 freebsd 里倒是经常看到很多 c 函数以及系统相关的 manul ,默认安装的,觉得还挺不错的!arch 下面默认安装肯定是没有的,也不知道在哪些包里。以前也一直想着要是 linux 内核文档也打包了话,想查某些东西的时候也不用跑去网上看了。
我的机子上目前没有见着 pthread 相关的文档。
离线
有很多在 man-pages 这个包里。另外 https://man.archlinux.org/ 可以看所有 Arch 官方仓库里的 man 文档。
内核文档在 linux-docs 这个包里。
离线
有很多在 man-pages 这个包里。另外 https://man.archlinux.org/ 可以看所有 Arch 官方仓库里的 man 文档。
内核文档在 linux-docs 这个包里。
好的,现在就安装。:lol
离线
pthread_kill 原来是在 signal.h 里面,难怪网上查到的都不怎么提。刚才还纳闷,跑去 /usr/include/pthread.h 里怎么没查到这个函数呢。
离线
页次: 1