一个C++程序员关于多线程的总结

多线程面试题

一份多线程面试题及参考答案

华为机试:HJ49,多线程

华为机试:HJ49,多线程
华为机试:HJ49多线程windows版本答案

你用过线程池吗?

如何实现多线程无锁同步

多机数据处理


有 10 台机器,每台机器上保存着 10 亿个 64-bit 整数(不一定刚好 10 亿个,可能有上下几千万的浮动),一共约 100 亿个整数(其实一共也就 80GB 数据,不算大,选这个量级是考虑了 VPS 虚拟机的容量,便于实验)。编程求出:

  1. 这些数的平均数。
  2. 这些数的中位数。
  3. 出现次数最多的 100 万个数。
  4. (附加题)对这 100 亿个整数排序,结果顺序存放到这 10 台机器上。
  5. (附加健壮性要求)你的程序应该能正确应对输入数据的各种分布(均匀、正态、Zipf)。
  6. (附加伸缩性要求)你的程序应该能平滑扩展到更多的机器,支持更大的数据量。比如 20 台机器、一共 200 亿个整数,或者 50 台机器、一共 500 亿个整数。

N-皇后问题的多机并行求解。


利用多台机器求出 N-皇后问题有多少个解。(注意目前的世界纪录是 N = 26,A000170 - OEIS )

  1. 8 皇后问题在单机上的运算时间是毫秒级,有 92 个解,编程实现之。
  2. 研究 N-皇后问题的并行算法,写一个单机多线程程序,争取达到线性加速比(以 CPU 核数计)。再设法将算法扩展到多机并行。
  3. 用 10 台 8 核的机器(一共 80 个 CPU cores),求解 19-皇后和 20-皇后问题,看看分别需要多少运行时间。你的方案能否平滑扩展到更多的机器?
  4. (附加题)如果这 10 台机器的型号不一,有 8 核也有 16 核,有旧 CPU 也有更快的新 CPU,你该采用何种负载均衡策略,以求缩短求解问题的时间(至少比 plain round-robin 算法要好)?。

如何学习多线程

1.先学操作系统

重点学习并发和同步这两章。

操作系统:学堂在线慕课(MOOC)平台
英文不是很好,打算学这个。

Udacity的Advanced OS公开课:Advanced Operating Systems from Udacity
在本课程中,学习最先进的操作系统,涵盖了各种平台——手机、多核、并行系统、分布式系统和云计算。

MIT的操作系统公开课以及该课程的youtube视频

2.然后学习pthreads

POSIX Thread Programming或者book:Programming with POSIX Threads

《win32多线程程序设计》

The C++ Standard Library 2nd介绍了C++11中添加的并发特性

《Windows核心编程》更是介绍多线程编程的好书

《C++ Concurrency in Action》中文版《C++并发编程》

3.分布式进阶

《Linux多线程服务端编程》
斯坦福:CS224b
MIT:6.824

参考文献:

C++多线程编程资料清单
《win32多线程程序设计》读书笔记

Linux服务器路线


微信公众号(欢迎关注):updatedaybyday

在这里插入图片描述


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值