只是一个小问题shared_ptr
.
使用shared_ptr
指向数组是一个好习惯吗?例如,
shared_ptr<int> sp(new int[10]);
Run Code Online (Sandbox Code Playgroud)
如果没有,那么为什么不呢?我已经意识到的一个原因是不能增加/减少shared_ptr
.因此,它不能像正常指向数组的指针一样使用.
#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++ 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) 我有一个关于 Linux 中交换器任务(空闲任务)的查询。我的系统有 16 个 CPU 核心。使用taskstats,我可以计算出交换器任务正在核心0 上运行。我的印象是,当该CPU 没有其他可运行任务时,每个CPU 核心都需要运行一个交换器任务。如果这是真的,那么为什么交换器任务显示只在 cpu0 上运行,如果它是错误的,那么当没有可运行的任务时,其余的 cpu 核心会做什么?
期待您的帮助。谢谢。
有没有办法在编译 linux 内核时将参数传递给内置内核模块?如果是,你能解释一下如何吗?我想将 max_bonds 的值传递给我内核中内置模块的绑定驱动程序。
Linux 内核版本 - 2.6
我编写了一个示例函数来理解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)
输出:
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 …
我想了解c ++ 11中原子变量的lock_free属性是什么意思.我确实在这个论坛上搜索了其他相关问题但仍然有部分理解.感谢是否有人能够以简单的方式端到端地解释它.
c++ ×5
c++11 ×5
linux ×2
atomic ×1
duration ×1
errno ×1
future ×1
linux-kernel ×1
shared-ptr ×1
stl ×1