IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Thread

共 3 篇相关文章

IT 累计浏览 5,357

进程和线程关系及区别

这篇讲的是操作系统中进程与线程的基础概念辨析。作者从定义出发,开篇就给出了明确定义:进程是资源分配和调度的独立单位,线程则是CPU调度的基本单位,且线程几乎不拥有系统资源,仅保留运行必需的最小集。 文章的核心在于对比二者的根本差异。关键区别在于资源管理方式:进程拥有独立的地址空间,因此一个进程崩溃不会波及其他,健壮性更高但切换开销大;而同一进程内的线程共享全部内存资源,这提升了并发效率与数据共享的便利性,但一个线程的异常往往会导致整个进程终止。 这种设计上的权衡,直接导向了不同的适用场景。对于需要高并发、共享数据且追求执行效率的任务,多线程是更优的选择。反之,对于需要更强隔离性、运行于多台机器或更看重稳定性的场景,多进程模型则更为可靠。文章最后也点明了线程执行开销小但不利于资源保护,进程则相反的特点。

IT 累计浏览 5,592

有道实习生笔试总结

这篇文章记录了作者作为实习生参加有道公司笔试后的深度总结。从背景入手,笔试是技术岗位招聘的关键环节,旨在评估候选人的编程基础和工程思维。作者详细描述了笔试的几个模块:选择题涵盖计算机网络和操作系统知识,编程题则聚焦于数据结构和算法。他特别提到一道动态规划题目,涉及状态转移方程的优化,通过实例展示了如何减少时间复杂度。此外,系统设计题要求设计一个高并发的短链服务,作者分享了关于负载均衡和缓存策略的思考过程。通过这次笔试,作者发现实战经验比理论更重要,建议读者在刷题之余参与开源项目。文章最后强调,笔试总结不仅是回顾,更是对技术栈

IT 累计浏览 4,175

最近几个容易错的地方总结(hash_map迭代删除,localtime(),线程状态)

这篇讲的是几个在实际编码中看似不起眼,却会埋下隐患的典型陷阱。 文章从作者的日常开发经验出发,聚焦于三个高频出现的“坑”:hash_map(如unordered_map)在遍历时直接删除元素、C标准库函数localtime()的线程安全性,以及对操作系统线程状态转换的常见误解。对于hash_map,问题在于直接删除当前迭代器指向的元素会导致迭代器失效,引发未定义行为。根因是破坏了容器内部的哈希表结构,而正确方法是使用`erase`返回的下一个有效迭代器。对于localtime(),其返回的指向静态局部变量的指针在多线程环境下会互相覆盖,导致数据混乱;解决方案是使用线程安全版本如localtime_r()。关于线程状态,文章澄清了“就绪”与“等待”的核心区别,并指出了在条件变量使用中“虚假唤醒”的经典错误及其正确处理方式。 这些细节往往是教科书不会强调,但实际工程中必须掌握的要点,是写出健壮、可维护代码的关键。