当前位置 博文首页 > haimianjie2012的专栏:一个C++程序员关于多线程的总结

    haimianjie2012的专栏:一个C++程序员关于多线程的总结

    作者:[db:作者] 时间:2021-08-18 21:46

    多线程面试题

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

    华为机试: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

    在这里插入图片描述


    cs
    下一篇:没有了