开发者社区> 问答> 正文

park的具体实现是什么?

park的具体实现是什么?

展开
收起
Aries- 2022-05-10 08:59:53 807 0
来自:阿里技术
1 条回答
写回答
取消 提交回答
  • 当调用park时,先尝试能否直接拿到“许可”,即_counter>0时,如果成功,则把_counter设置为0,并返回。2如果不成功,则把线程的状态设置成_thread_in_vm并且_thread_blocked。_thread_in_vm 表示线程当前在JVM中执行,_thread_blocked表示线程当前阻塞了。3拿到mutex之后,再次检查_counter是不是>0,如果是,则把_counter设置为0,unlock mutex并返回4如果_counter还是不大于0,则判断等待的时间是否等于0,然后调用相应的pthread_cond_wait系列函数进行等待,如果等待返回(即有人进行unpark,则pthread_cond_signal来通知),则把_counter设置为0,unlock mutex并返回。

    2022-05-10 22:52:59
    赞同 展开评论 打赏
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
Spark on Supercomputers 立即下载
Spark and S3 立即下载
Spark on Supercomputers: A Tal 立即下载