std ::移动堆栈对象(到另一个线程)

时间:2015-08-16 00:52:05

标签: c++ multithreading rvalue-reference

所以有两件事我不确定。

  1. 如果我这样做:

    void sendToDifferentThread(SomeClass &&obj);
    ...
    {
        SomeClass object;
        sendToDifferentThread(std::move(object));
    }
    
  2. 会发生什么?如果在堆栈上创建了object,那怎么可能只有SomeClass object; doSomethingOnSameThread(std::move(object)); 的副本,因为当我们离开封闭范围时,堆栈上的所有内容都被销毁了?

    1. 如果我这样做:

      object
    2. 如果我在当前范围内执行frame = new JFrame(title); frame.setSize(width, height); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setResizable(true); frame.setVisible(true); canvas = new Canvas(); canvas.setSize(width, height); canvas.setMinimumSize(new Dimension(width, height)); canvas.setMaximumSize(new Dimension(width, height)); canvas.setFocusable(false); frame.add(canvas); 之后会发生什么?它被移走了#34;对于其他一些功能,当前的功能也是如此,以及#34;失去"以某种方式拥有它?

0 个答案:

没有答案