- 博客(10)
- 收藏
- 关注
原创 哲学家进餐问题
他们的生活方式是交替地思考和进餐,但要进餐时,哲学家需要同时持有他左边和右边的叉子(每位哲学家左手边和右手边各有一只叉子)。例如,让四位哲学家先拿左边的叉子再拿右边的叉子,但第五位哲学家先拿右边的叉子再拿左边的叉子。下面的代码示例展示了如何用 std::mutex 和 std::thread 来模拟哲学家进餐问题,并采用方案 1 来避免死锁(规定哲学家以固定顺序拿起叉子)。:如果每位哲学家先拿起左手边的叉子,再去拿右手边的叉子,可能所有哲学家都各自持有一只叉子,等待另一只叉子,结果谁也不能进餐。
2024-11-07 21:29:19
583
原创 【检测死锁、预防死锁】
可以通过操作系统工具、线程状态、或构建资源分配图来检测死锁。使用 std::try_lock、std::timed_mutex 或 std::scoped_lock 来避免锁顺序不一致导致的死锁问题。
2024-11-07 21:02:41
861
原创 【进程间通信—消息队列】
消息队列是一种存储消息的链表,允许进程以消息的形式进行通信。进程可以将消息放入队列中,其他进程可以从队列中读取消息。消息队列能够支持异步通信,即消息的发送和接收不需要同步进行。特点:支持异步通信,数据以消息的形式传递。适用场景:多进程间的消息传递,适用于分布式或多线程系统。
2024-11-07 20:32:00
502
原创 Linux 升级gcc/g++最好的办法(有效)
在升级gcc的时候,遇到了错误,网上到处搜索解决方法,经过整整一天时间的处理,没有一个办法有效(真痛苦,环境重装了好多次)。终于,最后我还是解决了这个办法(O(∩_∩)O哈哈~)
2024-10-09 11:30:04
1428
原创 【深入理解 Linux 的 Epoll:高效的 I/O 事件处理机制】
当多路复用的文件数量庞大、IO流量频繁的时候,一般不太适合使用select()和poll(),这种情况下select()和poll()表现较差,推荐使用epoll()。本文部分来源:https://subingwen.cn/linux/epoll/#2-%E6%93%8D%E4%BD%9C%E5%87%BD%E6%95%B0。epoll_create()函数的作用是创建一个红黑树模型的实例,用于管理待检测的文件描述符的集合。2、控制操作:使用 epoll_ctl 添加、修改或删除监视的文件描述符。
2024-09-12 16:19:30
681
原创 C/C++不同类型之间地址存储转换
首先,我们知道int 占4字节,而char占一个字节。然后,当我们申请一块占有4字节的char型内存时,我们在该地址存int型的数据。结论:将拥有连续多个字节的char型内存转为int型地址时,是按照每连续4字节进行int型转化的。
2024-09-08 15:32:03
347
原创 《计算机系统应用》经验贴
这个期刊很不错,审稿专家的意见给的很好,编辑部小姐姐也很有耐心。第一次返修回来后,我按照审稿专家提的意见认认真真改了一周多。在第一次返修后,一直焦急的等待着返修结果,最终被录用了。觉得自己文章不错的可以投递,返修时一定要认真修改并注意文章的格式正确性,文章格式是最基本的要求,也是最重要的,关乎着一个人的态度及认真程度等。有不清楚的小伙伴,欢迎留言!
2024-08-26 21:41:58
909
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人