小编Vic*_*r M的帖子

std::async 与线程

我试图了解async与使用线程到底有什么不同。在概念层面上,我认为多线程根据定义是异步的,因为您正在线程之间进行 I/O 等上下文切换。

但似乎即使对于单线程应用程序之类的实例,仅添加线程也与使用async. 例如:

#include <iostream>       // std::cout
#include <future>         // std::async, std::future

// a non-optimized way of checking for prime numbers:
bool is_prime (int x) {
  std::cout << "Calculating. Please, wait...\n";
  for (int i=2; i<x; ++i) if (x%i==0) return false;
  return true;
}

int main ()
{
  // call is_prime(313222313) asynchronously:
  std::future<bool> fut = std::async (is_prime,313222313);

  std::cout << "Checking whether 313222313 is prime.\n";
  // ...

  bool ret = fut.get();      // waits for is_prime to …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading stdasync

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

df.hist() 与 df.plot.hist()?

对不起,如果我的问题看起来很基本,但我找不到直接的答案。目前正在学习 Pandas 可视化,但不了解df.hist()vs.之间的区别df.plot.hist()(分别参见此处此处)。有人可以启发我吗?

python matplotlib pandas

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

关于 C++ 删除和内存泄漏的澄清

据我了解,C++ 编译器会自动尝试删除超出范围的对象。然而,在这个记录悬空指针情况的SO 帖子中,有一个char数组被自动清除但没有delete操作:

char *func()
{
   char str[10];
   strcpy(str, "Hello!");
   return str; 
}
Run Code Online (Sandbox Code Playgroud)

这显然会返回一个悬空指针,因为内存将在作用域之后被释放。但是,如果我没有指定,这怎么可能delete?就我而言,这个网站显示了我认为在类似情况下会发生的情况:

#include <iostream>
using namespace std;
void oil_leak() {
  //allocate 8 bytes from heap
  double *pointer = new double(32.54);
}
int main() {
  oil_leak();
}
Run Code Online (Sandbox Code Playgroud)

即,为指针分配的内存在作用域之后没有释放,导致内存泄漏。

c++

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

标签 统计

c++ ×2

matplotlib ×1

multithreading ×1

pandas ×1

python ×1

stdasync ×1