小编tsh*_*h06的帖子

shared_ptr到一个数组:它应该被使用?

只是一个小问题shared_ptr.

使用shared_ptr指向数组是一个好习惯吗?例如,

shared_ptr<int> sp(new int[10]);
Run Code Online (Sandbox Code Playgroud)

如果没有,那么为什么不呢?我已经意识到的一个原因是不能增加/减少shared_ptr.因此,它不能像正常指向数组的指针一样使用.

c++ shared-ptr c++11

157
推荐指数
2
解决办法
8万
查看次数

C++ 11 future_status :: deferred not working

#include <iostream>
#include <future>
#include <chrono>

using namespace std;
using namespace std::chrono;

int sampleFunction(int a)
{
    return a;
}

int main()
{
   future<int> f1=async(launch::deferred,sampleFunction,10);
   future_status statusF1=f1.wait_for(seconds(10));
   if(statusF1==future_status::ready)
        cout<<"Future is ready"<<endl;
   else if (statusF1==future_status::timeout)
        cout<<"Timeout occurred"<<endl;
   else if (statusF1==future_status::deferred)
        cout<<"Task is deferred"<<endl;
   cout<<"Value : "<<f1.get()<<endl;
}

Output -
Timeout occurred
Value : 10
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我期待future_status的是deferred代替timeout.sampleFunction已发布为launch::deferred.因此,f1.get()在被调用之前不会执行.在这种情况下wait_for应该返回future_status::deferred而不是future_status::timeout.

感谢有人能帮助我理解这一点.我在fedora 17上使用g ++版本4.7.0.

c++ multithreading stl future c++11

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

error_code vs errno

我正在学习C++ 11标准.我想了解error_code和errno是否相互关联?如果是,那怎么样?如果没有那么我应该在哪些条件下设置errno以及在哪些条件下设置error_code?

我做了一个小测试程序来理解这一点,但仍然有点困惑.请帮忙.

#include <iostream>
#include <system_error>
#include <thread>
#include <cstring>
#include <cerrno>
#include <cstdio>

using namespace std;

int main()
{
    try
    {
        thread().detach();
    } catch (const system_error & e) {
        cout<<"Error code value - "<<e.code().value()<<" ; Meaning - "<<e.what()<<endl;
        cout<<"Error no. - "<<errno<<" ; Meaning - "<<strerror(errno)<<endl;
    }
}

Output -
Error code value - 22 ; Meaning - Invalid argument
Error no. - 0 ; Meaning - Success
Run Code Online (Sandbox Code Playgroud)

c++ error-handling errno c++11

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

多个 CPU 核心上的交换器任务

我有一个关于 Linux 中交换器任务(空闲任务)的查询。我的系统有 16 个 CPU 核心。使用taskstats,我可以计算出交换器任务正在核心0 上运行。我的印象是,当该CPU 没有其他可运行任务时,每个CPU 核心都需要运行一个交换器任务。如果这是真的,那么为什么交换器任务显示只在 cpu0 上运行,如果它是错误的,那么当没有可运行的任务时,其余的 cpu 核心会做什么?

期待您的帮助。谢谢。

linux

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

在编译时将参数传递给内置内核模块

有没有办法在编译 linux 内核时将参数传递给内置内核模块?如果是,你能解释一下如何吗?我想将 max_bonds 的值传递给我内核中内置模块的绑定驱动程序。

Linux 内核版本 - 2.6

linux linux-device-driver linux-kernel

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

C++ 11 std :: chrono :: duration的示例

我编写了一个示例函数来理解std::chrono::duration最近作为C++ 11标准的一部分引入的行为.

void exampleForDuration()
{
    seconds Sec(minutes(1));

    cout<<"1 second is "<<duration_cast<nanoseconds>(seconds(1)).count()<<" nanoseconds"<<endl;
    cout<<"1 minute is "<<Sec.count()<<" seconds"<<endl;
    cout<<"1 second is "<<duration_cast<duration<int,centi>>(seconds(1)).count()<<" centiseconds"<<endl;
    cout<<"100 second is "<<duration_cast<minutes>(seconds(100)).count()<<" minute."<<endl;
    cout<<"Waiting for 10 seconds...";
    auto start=system_clock::now();
    this_thread::sleep_for(seconds(10));
    cout<<"Done."<<endl;
    auto end=system_clock::now();
    auto waitedFor=end-start;
    cout<<"Waited for "<<duration_cast<seconds>(waitedFor).count()<<" seconds"<<endl;
    printCurrentDateTime();
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 second is 1000000000 nanoseconds
1 minute is 60 seconds
1 second is 100 centiseconds
100 second is 1 minute.                -------> 1)
Waiting for 10 seconds...Done.         -------> 2)
Waited for 10 seconds …
Run Code Online (Sandbox Code Playgroud)

c++ duration c++11

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

C++ 11:原子变量:lock_free属性:这是什么意思?

我想了解c ++ 11中原子变量的lock_free属性是什么意思.我确实在这个论坛上搜索了其他相关问题但仍然有部分理解.感谢是否有人能够以简单的方式端到端地解释它.

c++ atomic c++11

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