首页 > 所有文章 > 行业 >文章详情

获取进程ip(如何通过运行查看ip)

时间:2023-10-28 17:44:07 浏览量:35

一、线程锁

a) 互斥锁

b) 自旋锁

c) 读写锁

d) 条件变量

e) 信号量

f) 原子锁

扩展:互斥锁和自旋锁可以同时使用

1. 自旋锁 时间 500ms 衰减因子 88888 -1

2. 改用互斥锁

文章福利: 现在C 程序员面临的竞争压力越来越大。那么,作为一名C 程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。为了帮助大家少走弯路, 技术要做到知其然还要知其所以然。 以下视频私信

如果想学习C 工程化、高性能及分布式、深入浅出。性能调优、TCP,协程,Nginx源码分析Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,Linux内核,P2P,K8S,Docker,TCP/IP,协程,DPDK的朋友可以关注我

一个机器中的进程间竞争资源的锁。nginx

ngx_shmtx_t 来解决进程间竞争资源的问题 accept

if ngx_have_atomic_ops

if ngx_have_posix_sem

自旋锁 互斥锁

else

自旋锁

endif

else

文件锁 fcntl(int fd, int cmd, struct *flock *lock) 系统是用来实现的

f_setlk f_setlkw

ngx_fd_t fd;

uchar *name;

endif

nginx 进程锁有三种方式的实现:

1. 只支持原子操作 自旋锁 大量并发请求 修改参数 只支持

spin = 40亿

2. 既支持原子操作又支持信号量,自旋锁 互斥锁

3. 文件锁

ngx_shmtx_t 存储在共享内存中

redis 实现的方案 数据库 zookeeper

lock(mutex);

获得操作权;

unlock(mutex);

redis

redis如何实现分布式锁:

方案1:

获取锁: set(“lock”, 1, nx ) setnx(“lock”, 1)

释放锁: del(“lock”)

问题: a. 如果a进程挂了,变成死锁 b. 谁都可以释放锁

需要确定当前谁获取了锁

在分布式系统中 怎么区分不同的进程?

pid --- pid 依次累加的 几天了 批处理 1. 重复 2. pid cat /proc/1024/status 可以查询 内存以及cpu使用 coredump

ip:port

ip:port:pid:starttime 四元组来唯一标识进程

方案2:

获取锁:set(“lock”, 进程四元组,nx, ex, 30);

释放锁:if get(“lock”) == 进程四元组 redis的lua事务 mysql 存储过程一样

del(“lock”)

问题: a.如果a操作临界资源的时间超过30秒

加一个线程:续时间

b. b,c,d进程怎么去查询锁?第一种 定时30轮询 尝试获取锁 第二种:监听发布机制 key超时机制 (新的与redis的连接) 解决方案:第一种

c. 公平锁 按照我们获取锁的顺序 获取锁

关注我每日更新C/C 服务器高级架构学习笔记!