小编use*_*064的帖子

如何检查线程在C ++ 11及更高版本中是否已完成工作?

如何检查线程在C ++ 11及更高版本中是否已完成工作?我正在阅读文档,并编写了以下代码:

#include <iostream>
#include <thread>
void mythread() 
{
    //do some stuff
}
int main() 
{
  std::thread foo(mythread);  
  if (foo.joinable())
  {
    foo.join();
    //do some next stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

joinable 仅告诉线程已开始工作,但我想知道如何编写代码以检查线程是否已完成工作。

例如:

#include <iostream>
#include <thread>
void mythread() 
{
    //do some stuff
}
int main() 
{
  std::thread foo(mythread);  
  if (foo.finishedWork())
  {
    foo.join();
    //do some next stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading multitasking c++11

4
推荐指数
2
解决办法
5972
查看次数

如何在git中递归添加特定文件?

要在Windows上使用git bash在git上提交一些东西我需要做,例如:

1.git add *
2.git commit -m "Commit test"
3.git push origin master
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我提交了所有更改.我想只添加特定文件(*.h和*.cpp).解决方案是使用:

ad. 1.:
git add *.h
git add *.cpp
Run Code Online (Sandbox Code Playgroud)

但是这样我只在当前文件夹中添加*.h和*.cpp.问题是如何在一个命令中的当前文件夹和子文件夹中添加文件*.h和*.cpp?就像是:

1.git add *.h and *.cpp and_in_subfolders
and then:
2.git commit -m "Commit test"
3.git push origin master
Run Code Online (Sandbox Code Playgroud)

谢谢.

git git-add git-bash

3
推荐指数
1
解决办法
1704
查看次数

使用auto_ptr时*ptr和*ptr.get()之间有什么区别?

为什么要使用get()*,而不是只打电话*

请考虑以下代码:

auto_ptr<int> p (new int);
*p = 100;
cout << "p points to " << *p << '\n';           //100

auto_ptr<int> p (new int);
*p.get() = 100;
cout << "p points to " << *p.get() << '\n'; //100
Run Code Online (Sandbox Code Playgroud)

结果完全一样.是get()更安全?

c++ smart-pointers auto-ptr

3
推荐指数
2
解决办法
741
查看次数

从表中获取值作为参考

在c ++中,它可以通过引用(&)或指针(*)来实现.在C#中有"ref".如何从表中获取值并通过引用来更改它?

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int[] t=new int[3]{1,2,3};
            int a=t[0]; //ref int a=t[0];
            a+=10;
            System.Console.WriteLine("a={0}", a);   //11
            System.Console.WriteLine("t[0]={0}", t[0]); //1
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如在c ++中

int &a=tab[0];
Run Code Online (Sandbox Code Playgroud)

c# reference ref visual-studio

1
推荐指数
1
解决办法
121
查看次数

如何在Linux上使用Boost.Filesystem?

我写了一个简单的代码来创建文件夹.问题是我无法编译它.代码如下:

#include <iostream>
#include <boost/filesystem.hpp>
int main()
{
  boost::filesystem::create_directories("/tmp");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

汇编:

g++ createFolder.cpp -std=c++0x -lboost_system -o createFolder
Run Code Online (Sandbox Code Playgroud)

我有错误:

collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

如何更正编译过程以运行此程序.

c++ linux boost compilation g++

0
推荐指数
1
解决办法
685
查看次数