简 述: 在 mac 中修改 typora 主题的英文和中文的字体,使得码字更加舒服(win 也有效)。
简 述: 在 mac
上面配置好了 gpg
的相关密钥之后,尝试带着 gpg
验证提交 commit,发现报错如下:
简 述: 在重装 Mac
系统的 💻 上,安装 HomeBrew
,执行官方命令失败,报错 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
的 解决方法: 修改 hosts 文件 [使用raw.githubusercontent.com
的真实IP] 。
Google
了下,网上那转载了一篇文章已经有几十遍了,或许也对你不起效吧,即使想找一篇不一样的也这么的困难,还是我自己动手;如果对你有效,就把这篇顶上去,为其他人节约时间,提供一个新的方法的、
更新 2022-08-26
不浪费时间,珍爱生命,直接使用封装好的 HomeBrew 脚本(国内镜像):https://zhuanlan.zhihu.com/p/111014448
简 述: 在我的 💻 MacOS 10.14.6
上面,第一次遇如下问题,附上解决方法
打不开“ xxx”,因为 Apple 无法检查其是否包含恶意软件。
简 述: 讲解元对象系统moc
(Meat-Object System)的对象MetaObject
和(含动态)属性Propert
的用法。没想到这一篇会延期如此之久之久。 (此篇有大部分是借鉴书籍和或互联网),因为作者写的很棒,故大篇幅的直接借鉴过来了 。其中文中有些少部分是自己照着修改了一点,稍加改写而成的。
简 述: 上一篇中讲解了“条件变量 + 互斥量”的组合使用,演示了 “生产者-消费者”模型。本篇讲解 互斥量的升级版:信号量(信号灯) 的理解和使用。互斥量与信号量的关系,可以简单理解为 c 和 c++ 的关系。信号量的使用的步骤,也是和前面的互斥量很像,不过这次的头文件改为了 #include <semaphore.h>
:
- sem_t sem; //定义变量
- sem_wait(); //加锁
- …其他代码
- sem_post(); //解锁
- sem_destroy(); //销毁
说明:
本例子是在 Linux 下面运行成功的,编译时候,时候需要加参数 -pthread
。
若是想要在 Mac 运行改程序,需要改写替换部分函数(mac 不支持其中的部分函数)
简 述: 继续上一篇中,讲解了原子⚛操作(粗略看作 cpu 会执行完该几行代码,才会切换到其他的线程)和重点讲解读写锁 的使用。本篇讲解 条件变量 的使用步骤:
pthread_cond_t g_cond()
//条件变量–阻塞线程,等待条件满足*pthread_cond_init()
//初始化pthread_cond_wait()
/pthread_cond_timedwait()
//阻塞线程(若是条件不满足)- …其他代码
pthread_cond_signal()
/pthread_cond_timedwait()
//通知阻塞中的线程解除阻塞pthread_cond_destroy()
//销毁
简 述: 上一篇中介绍了多线程使用互斥量(锁)来控制程序的访问公共资源的时候是”串行“的;本篇继续,重点讲解如下几个概念:Linux 中的原子操作 、死锁原因 以及解决方法 、和读写锁 和对应的源码小例子。其中读写锁的使用例子,完全可以参考互斥量(锁),其大概流程如下:
pthread_rwlock_init()
pthread_rwlock_rdlock()
/pthread_rwlock_tryrdlock()
/pthread_rwlock_wrlock()
/pthread_rwlock_trywrlock()
- 、、、代码片
pthread_rwlock_unlock()
pthread_rwlock_destroy()
简 述: 在 Linux 中,使用互斥量(互斥锁🔐) Mutex 来给保证多线程 ,在访问公共变量的时候能够 “串行” 代码。从而使得多线程正确的同步执行。关于多线程创建和使用可以参考前面几篇的文章,争取早日把 Linux 系统篇之 系统编程给发布完系列的教程。
PS:好几天没有接着学习 Linux 的系统函数和理论知识了。可能是前面几天有点忙了吧;时间流逝啊,总是这么得快,,,,
关于互斥锁的使用如下:
- pthread_mutex_t *mutex; //创建一个锁
- pthread_mutex_init(); //初始化一个互斥锁
- pthread_mutex_lock(); //上锁🔓,或者使用 pthread_mutex_trylock()
- pthread_mutex_unlock(); //解锁🔐
- pthread_mutex_destroy; //销毁互斥锁