常见并发与系统设计

收集一些常用结构设计

并发设计

leetcode上多线程题目

并发工具

线程的同步与互斥:条件变量&信号量

信号量

sem_t s;

/*
shared : 0 进程内
value: 可用资源数量
*/
int sem_init(sem_t* s, int shared, unsigned int value); 

int sem_destroy(sem_t* s);

// 等待资源,等到后可用资源数目减一
int sem_wait(sem_t* s); 

// 释放资源,可用资源数目加一 (即使初始化时 value为0,调用sem_post后,可用资源也会增加)
int sem_post(sem_t* s);

1114. 按序打印
1117. H2O 生成

pthread_mutex_t lock;

// attr 一般填NULL
int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t *restrict attr); 

int pthread_mutex_destroy(pthread_mutex_t* mutex);

int pthread_mutex_lock(pthread_mutex_t* mutex);

int pthread_mutex_unlock(pthread_mutex_t* mutex);

1226. 哲学家进餐

哲学家进餐

条件变量

pthread_cond_t lock;

// cattr一般为NULL
int pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t *cattr); 

int pthread_cond_destroy(pthread_cond_t* cond);

int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex);

int pthread_cond_signal(pthread_cond_t* cond);

int pthread_cond_broadcast(pthread_cond_t* cond);

pthread_join

int pthread_create(pthread_t*, NULL, thread_func, NULL);

int pthread_join(pthread_t*)

更多阅读

系统设计

leetcode设计类题目

LRU

146. LRU缓存机制

SkipList

1206. 设计跳表
Go 实现 Skip List(跳表)

LFU

460. LFU缓存

Map

706. 设计哈希映射
HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

循环队列

622. 设计循环队列

posted @ 2020-08-29 10:08  holidays  阅读(151)  评论(0编辑  收藏  举报