• 李公子胜治
    2020-01-08
    作者大大,你好,我在effective modern c++这本书上面看到,作者告诫我们平时写代码时,首先基于任务而不是线程,但是如果我们使用async时,实际上async还是为我们创建了一个新线程,还是没有体会到async比thread的优越性,难道仅仅是可以调用get(),获取async后的执行结果吗?

    作者回复: 少写这么多代码,还没有优越性?

    新功能很多是用来提高程序员的工作效率的。而且,脑子摆脱了底层细节,就更有空去思考更高层的抽象了。否则开发里到处是羁绊,只看到这个不能做,那个很麻烦。

    
     4
  • YouCompleteMe
    2020-01-08
    当时看<The C++ Programming>下册关于多线程的时候,还写了一些demo,现在看到future/async这些类,一点想不起来怎么用的-_-

    作者回复: 一定是要多用,形成“肌肉记忆”才行。光读不用是真会忘的。

    
     3
  • 王大为
    2020-01-09
    最近用google的cpplint工具扫描了我的代码,但cpplint报告说不允许包含c++11的thread头文件,请问这个是出于什么目的呢?

    cpplint. py --verbose=5 my_cpp_file
    output : <thread> is an unapproved c++11 header

    我看了一下cpplint脚本,里面确实对mutex thread chrono等头文件做了限制。
    展开

    作者回复: 那是Google的偏好。除非你为Google的项目贡献代码,理它干嘛?

     1
     1
  • 三味
    2020-01-10
    普大喜奔!
    🍾🍾🎉🎉🎊🎊
    模板章节终于结束了!
    其实我还没学够呢(真心)

    其实死锁这玩意太容易出现了。描述一个比较经典的场景,A,B两个线程,a,b两个资源,两个线程都要用两个资源。
    A线程先用资源a,锁住资源a;
    B线程先用资源b,锁住资源b;
    A线程还需要资源b,但是不能放开资源a,因为没用完;
    B线程还需要资源a,但是也不能放开资源b,因为没用完;
    A线程占着a不放还想用b,B线程占着b不放还想用a;
    A说,你先给我用b,我用完b,我肯定ab一起放;
    B说,为啥你不给我用a,我用完a,我肯定ab一起放;
    任务管理器说:你们都死吧。
    展开

    作者回复: 编译期编程确实是 C++ 里比较好玩的部分,但也容易被滥用,还容易把新手全吓跑……

    
    
  • 舍得
    2020-01-08
    nice
    
    
  • tt
    2020-01-08
    烧脑的编译期内容终于结束了。每天在工作之余烧一会儿,还没烧透呢,就结束了。是该庆幸还是该解脱呢?

    感觉编译期编程就是C++中的理论物理,需要纸和笔,然后适应一大堆符号。

    feature只能使用一次,是为了避免多次使用带来的循环获取锁从而导致死锁么?


    读书的时候先学的就是C++,并且为其微妙的语义而着迷,可以工作中很少用到它。接触future, promise, async是从Python和JavaScript开始的。虽然这三种语言互补相同,可是在异步或者并发上,用的关键词竟然都是一样的,真是聪明的脑袋都是类似的,愚笨的脑袋各有不同啊。

    这个巧合也许因为Python和JavaScript底层都是用c/c++实现的?
    展开

    作者回复: future的设计原则我不熟。我是挺希望跟promise联用能复用,真当成管道。但目前不支持。也许以后可以。并发方面,C++的标准机制还缺不少东西的,同步只用标准库的话很难。不过C++20会加不少新东西。

    用词方面的相同应该和语言实现是否用C++没关系。并发方面有很多前沿的文献,标准术语应该早就有不少了吧。而且,标准的Python实现,CPython,是纯C写的。

    
    
我们在线,来聊聊吧