apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".

Home Page:https://brpc.apache.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[question] wait_for_butex 还是有可能会让正在执行的pthread陷入内核?

ilixiaocui opened this issue · comments

wait_for_butex中使用的waiter_lock调用了futex,在一些场景下还是会使得正在执行的pthread陷入内核,而无法执行其他bthread任务吧?
image

是的,可能会陷入内核,但是即便不发起任何syscall也有可能被内核调度走呀

是的,可能会陷入内核,但是即便不发起任何syscall也有可能被内核调度走呀

主要是看到这里的疑问:也就是使用butex也还是有概率会导致pthread被挂起的?但是由于这里的临界区很小,被挂起的概率就小很多?

image

这里想表达的是: 如果一个bthread阻塞在butex上,它会被添加到butex的等待队列,不论它将要等待多久,这个pthread在操作完之后都可以立即去继续执行其他bthread,反之如果阻塞在mutex上,这个就需要等待mutex被释放之后才能继续执行其他bthread。前面的case pthread 被阻塞的概率和时长,与这个butex被释放的时间无关。

这里想表达的是: 如果一个bthread阻塞在butex上,它会被添加到butex的等待队列,不论它将要等待多久,这个pthread在操作完之后都可以立即去继续执行其他bthread,反之如果阻塞在mutex上,这个就需要等待mutex被释放之后才能继续执行其他bthread。前面的case pthread 被阻塞的概率和时长,与这个butex被释放的时间无关。

了解了 感谢 ~