下拉刷新
笔记
标签
面向程序员的本地 Markdown 笔记工具
一款适合程序员的笔记工具,拥有和其它工具不一样的体验。特性: - 技术笔记:可直接在文档中运行代码块(默认支持 JS 代码,其它语言需配置) - 制作辅助工具:可在文档中嵌入 HTML 组件来制作辅助工具 - 画图和图表:支持嵌入多种图形、思维导图、Plantunl、Drawio、Mermaid 、ECharts - 工作日报:支持任务代办列表,使用“宏替换”功能可以方便地生成日报周报
purocean
·
TypeScript
·
664
图文并茂的 Python 源码阅读笔记项目
图文并茂的 Python 源码阅读笔记项目。阅读的是比较新的 CPython 3.8 版本,重点是项目一直在更新维护 ```c++ static void take_gil(PyThreadState *tstate) { /* 忽略 */ while (_Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked)) { /* 只要 gil 是锁住的状态, 进入这个循环 */ int timed_out = 0; unsigned long saved_switchnum; saved_switchnum = _PyRuntime.ceval.gil.switch_number; /* 释放 gil.mutex, 并在以下两种条件下唤醒 1. 等待 INTERVAL 微秒(默认 5000) 2. 还没有等待到 5000 微秒但是收到了 gil.cond 的信号 */ COND_TIMED_WAIT(_PyRuntime.ceval.gil.cond, _PyRuntime.ceval.gil.mutex, INTERVAL, timed_out); /* 当前持有 gil.mutex 这把互斥锁 */ if (timed_out && _Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked) && _PyRuntime.ceval.gil.switch_number == saved_switchnum) { /* 如果超过了等待时间, 并且这段等待时间里 gil 的持有者没有变更过, 则尝试让当前持有 gil 的线程进行释放gil 把 gil_drop_request 值设为 1, 持有锁的线程看到这个值的时候, 会尝试放弃 gil */ SET_GIL_DROP_REQUEST(); } /* 继续回到 while 循环, 检查 gil 是否为锁住状态 */ } /* 忽略 */ } ```
zpoint
·
C
·
617

- 到底了,目前只开放了这些 -