• 为什么条件变量需要与互斥锁配合使用

    条件变量(condition variable)是常用的线程同步技术,通常用于让线程阻塞并等待某个条件满足。它需要与互斥锁搭配使用,但是你有想过为什么需要搭配一个互斥锁呢?

  • 单个进程内最多可以有多少个线程

    在开发一个服务程序时,使用的是单个进程中多线程的模式,要为每个连接的设备分配一个线程。随着设备越来越多,分配的线程数量就不断上升,当线程数量达到一定值时程序就报错退出了。于是问题就来了,单个进程到底可以有多少个线程呢?

  • Linux 常用的排查故障指令

    本文总结了常用的排查 linux 服务器故障的命令行指令,这些指令能够查看操作系统的实时状态信息,在排查问题时起到辅助作用。

  • Linux中修改程序的run path

    对于动态库的加载,不同的操作系统有不同的搜索策略。在windows下,程序会优先加载同路径中的动态库,这是一个非常方便的特性。而在linux下,需要单独配置 LD_LIBRARY_PATH 以实现上述类似特性。曾经困扰我很长一段时间的就是linux平台的动态库加载问题,最常出现的问题是程序启动时找不到所需要的动态库。在得知修改run path可以调整程序搜索动态库的路径时,一切都迎刃而解了。

  • C语言中数组地址的特性

    最近在开发中使用到了C风格的数组,在对数组地址进行增减操作时有些疑惑,现在将这些要点总结下来,方便查阅。

  • 在Linux的信号处理函数中不要进行锁相关操作

    最近在写一个linux程序,其中一个逻辑是要等待信号(signal),我使用了条件变量(condition variable)来完成这个操作,但是实际效果却是整个程序卡住了,经过查阅资料后得知在信号处理函数中是不能进行锁操作的。