小编Per*_*kie的帖子

async总是在C++中使用另一个线程/核心/进程吗?

据我所知,async在另一个线程/进程/核心中执行一个函数并且不阻塞主线程,但总是这样吗?

我有以下代码:

async(launch::async,[]()
{
    Sleep(1000);
    puts("async");
});
puts("main");
Run Code Online (Sandbox Code Playgroud)

它打印async main,这是否意味着主线程等待直到async完成?

如果我改为以下:

auto f = async(launch::async,[]() // add "auto f = "
{
    Sleep(1000);
    puts("async");
});
puts("main");
Run Code Online (Sandbox Code Playgroud)

它打印main async.这使得看起来主要不等待async完成.

c++ concurrency multithreading asynchronous

26
推荐指数
2
解决办法
3789
查看次数

copy vs std :: move for thets

  • 在该示例中,默认副本和std :: move之间有什么区别?
  • move对象之后,新旧对象之间是否存在依赖关系?
int main () {

    int a = 100;
    std::cout<<&a<<std::endl;

    auto a_copy = a;                 // deduced as int
    std::cout<<&a_copy<<std::endl;

    auto a_move = std::move(a);      // deduced as int
    std::cout<<&a_move<<std::endl;

};
Run Code Online (Sandbox Code Playgroud)

输出:

0x7fffffffe094
0x7fffffffe098
0x7fffffffe09c
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics c++11

25
推荐指数
4
解决办法
9710
查看次数

"长期任务"是什么意思?

默认情况下,CLR在池化线程上运行任务,这对于短期运行的计算绑定工作是理想的.对于长时间运行和阻塞操作,可以按如下方式阻止使用池化线程:

Task task = Task.Factory.StartNew (() => ...,
TaskCreationOptions.LongRunning);
Run Code Online (Sandbox Code Playgroud)

我正在阅读关于thread和的主题task.你能解释一下"长[呃] - 跑"和"短跑"的任务是什么?

.net c# multithreading task

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

将shared_ptr与char*一起使用

我不能创造:

shared_ptr<char> n_char = make_shared<char>(new char[size_]{});
Run Code Online (Sandbox Code Playgroud)

我该怎么创造

char* chr = new char[size_]{}; 
Run Code Online (Sandbox Code Playgroud)

用现代指针?

c++ c++11

6
推荐指数
2
解决办法
1万
查看次数

为什么C#不直接编译到机器代码?

CIL是一种面向对象的汇编语言,完全基于堆栈.它的字节码被翻译成本机代码,或者 - 最常见的 - 由虚拟机执行.

为什么我们需要CIL?是不是可以将C#转换为本机代码而不是CIL?如果所有.Net语言都编译成CIL,为什么不使用C#而不是IL?CIL比C#或VB更具表现力吗?

c# cil compilation intermediate-language

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

这两个构造函数都做同样的事情吗?

这两个代码块都做同样的事情吗?

class A {
   public static int s;
   A(){}
   static A(){s = 100;}
}
Run Code Online (Sandbox Code Playgroud)

class A {
   public static int s=100;
   A(){}
   //static A(){s = 100;} do not use
}
Run Code Online (Sandbox Code Playgroud)

他们做同样的事情吗?我认同.

c# static-constructor

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

std :: function vs function pointer

  • 有什么不同吗?

  • 哪种"保存/转移"功能最好?

    function<void(int)> fcn = 
                        [](int par) {std::cout<<"fcn: "<<par<<std::endl; };
    void(*fcn_a)(int) = 
                        [](int par) {std::cout<<"fcn_a: "<<par<<std::endl; };
    
    
    fcn(12);
    fcn_a(12);
    
    Run Code Online (Sandbox Code Playgroud)

c++ function-pointers std-function

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

使用初始化列表分配字符串

  • 你能解释一下,为什么会有差异?
  • 什么意思PKcE

码:

#include <iostream>
#include <typeinfo>
using namespace std;

int main() {
    string s {"IDE"};
    std::cout<<typeid(s).name()<<std::endl;

    auto S{"IDE"};      // why do not deduced as string?
    std::cout<<typeid(S).name()<<std::endl;

    auto c = {"IDE"};  // why do not deduced as string?
    std::cout<<typeid(c).name()<<std::endl;   

    auto C {string{"IDE"}}; // why do not deduced as string?
    std::cout<<typeid(C).name()<<std::endl; 

    auto Z = string{"IDE"};
    std::cout<<typeid(Z).name()<<std::endl; 

}
Run Code Online (Sandbox Code Playgroud)

输出:

Ss
St16initializer_listIPKcE
St16initializer_listIPKcE
St16initializer_listISsE
Ss
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list c++11

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

在C++中隐式转换char []到char*

大小char[]number of char times sizeof(char),大小char*sizeof(pointer)- 指向第一个元素的指针.

sizeof(char[])打印number of char times sizeof(char)main(),在它的声明,但如果我通过这个数组的功能,其功能转换char[]char*和它的imposibble获得使用数组的大小sizeof(),

"void pr(char chr[])" is changed to "void pr(char chr*)"
Run Code Online (Sandbox Code Playgroud)

代码示例:

using namespace std;
void pr(char chr[])
{
    std::cout << "in pr(): " << sizeof(chr)<<"\n";
}
int main()
{
    char* c;
    char z[] = { 1,2,3,4,5,6,7,8,9};
    c = z;
    std::cout << "sizeof char* c in main(): " << sizeof(c) << "\n"; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers

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

var关键字猜测VS 2013

这段代码工作正常:

Process v = Process.GetProcessById(6752); // firefox 
Console.WriteLine(v);
ProcessThreadCollection th = v.Threads;
foreach (ProcessThread pt in th)
{
    var info = string.Format("-> Thread ID: {0}\tStart Time: {1}\tPriority: {2}",
        pt.Id, pt.StartTime.ToShortTimeString(), pt.PriorityLevel);
    Console.WriteLine(info);
}
Run Code Online (Sandbox Code Playgroud)

但是不要工作这个:

Process v = Process.GetProcessById(6752); // firefox 
Console.WriteLine(v);
ProcessThreadCollection th = v.Threads;
foreach (var pt in th)  // var instead of ProcessThread
{
    var info = string.Format("-> Thread ID: {0}\tStart Time: {1}\tPriority: {2}",
        pt.Id, pt.StartTime.ToShortTimeString(), pt.PriorityLevel);
    Console.WriteLine(info);
}
Run Code Online (Sandbox Code Playgroud)

pt在第二个假定为object编译器,当然不编译.

为什么假定的元素ProcessThreadCollection作为object代替 …

c# var visual-studio

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