草庐IT

non-unique

全部标签

c++ - Mac OS X : is it possible to imbue a non-main thread to become "The Main Thread" of a process?

我在MacOSX(10.6.7)下遇到了与GUI/线程相关的问题。我正在使用wxWidgets框架(版本2.9.1),在我的例子中它依赖于Cocoa。应用设计是这样的:线程#1(又名“主线程”):进入main(),解析开关,并在必要时启动另一个线程(使用POSIX原语)。线程#2(又名“GUI线程”):使用wxEntry初始化wxWidgets并显示GUI。与大多数其他GUI框架一样,Cocoa不是线程安全的,因此我们确保在线程#2中执行所有GUI调用,并在需要时传递消息。然而,在这种特殊情况下,在初始化期间(从NSUndoManager更准确地说)从Cocoa内部提出了一个断言,本质

c++ - 在 VS1012 中使用 std::move 将 std::unique_ptr 发送到 std::thread

在VisualStudio2012中出现以下错误。voiddo_something(std::unique_ptri);std::unique_ptri(newint);std::thread(do_something,std::move(i));Error3errorC2248:'std::unique_ptr::unique_ptr':cannotaccessprivatememberdeclaredinclass'std::unique_ptr'c:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\functional

c++ - llvm::make_unique 的目的是什么?

在llvm的编译器实现教程(例如here)中使用了llvm::make_unique。他们不使用std::make_unique的原因是什么?我找不到任何明确的文档。 最佳答案 TL;DR;LLVM是使用符合C++11的代码编写的,而std::make_unique是一个C++14特性。所以如果他们想要make_unique他们需要实现它。详情如果我们转到LLVMCodingStandardsC++StandardVersionssection说:LLVM,Clang,andLLDarecurrentlywrittenusingC+

c++ - "non-virtual thunk to <method name>", 引用自 : Vtable for <classname>in <objectfile. o>

在Debug模式下编译时,我的xcode编译出现以下链接错误:"",referencedfrom:Vtableforin"non-virtualthunkto",referencedfrom:Vtableforin奇怪的是:它只出现在我的一个构建目标中(该代码的两个目标几乎相同),而且如果这些方法是在头文件而不是.cpp中定义的,那么它对两者都适用目标。所有这些方法都是纯虚拟的。发生这些错误的类继承自多个类,但只有其中一个会导致这些错误。有人知道导致此错误的原因吗? 最佳答案 遇到了同样的问题。当我们定义了一个虚拟成员函数(在.h头

c++ - Boost Thread 的 boost::unique_lock 是作用域锁吗?

我了解由boost::mutex::scoped_lock锁定的变量在超出范围时会自动解锁。boost::unique_lock怎么样,变量超出范围时会自动解锁吗?任何人也可以指出该功能的引用。doublex;boost::mutexx_mutex;voidfoo(){{boost::unique_locklock(x_mutex);x=rand();}......somecalculationwhichtakes10second............isxstilllockedhere???......}谢谢。 最佳答案 sco

c++ - 使用 std::mutex、std::condition_variable 和 std::unique_lock

我在理解条件变量及其在互斥锁中的使用方面遇到了一些问题,希望社区可以帮助我。请注意,我来自win32背景,所以我与CRITICAL_SECTION、HANDLE、SetEvent、WaitForMultipleObject等一起使用。这是我第一次尝试使用c++11标准库进行并发,它是programexamplefoundhere的修改版本.#include#include#include#include#include#include#includeint_tmain(intargc,_TCHAR*argv[]){std::queuenNumbers;std::mutexmtxQueu

c++ - C++11 中的 unique_ptr vector

我最近切换到C++11,并且正在尝试习惯那里的良好实践。我最终经常处理的是这样的:classOwner{private:vector>_vectorOfHeavyResources;public:virtualconstvector*GetVectorOfResources()const;};这需要我做一些事情,比如添加一个_returnableVector并翻译源vector以便以后能够返回它:_returnableVector=vector;for(inti=0;i有没有人注意到类似的问题?你的想法和解决方案是什么?我在这里得到了完整的所有权想法吗?更新:这是另一件事:如果一个类将

c++ - 如何为 std::for_each 中的 lambda 捕获 std::unique_ptr "by move"

我正在学习c++11中的新功能并遇到了这个问题。我想通过将其移动到lambda中作为for_each的参数来捕获unique_ptr。设置:std::arrayarr={1,3,5,6};std::unique_ptrp(newint);(*p)=3;尝试1-不起作用,因为unique_ptr没有复制构造函数。c++0x没有指定passbymove语法。std::for_each(arr.begin(),arr.end(),[p](int&i){i+=*p;});尝试2-使用bind将p的移动拷贝绑定(bind)到采用int&的函数:std::for_each(arr.begin(),

C++ 数组和 make_unique

作为this的后续行动发布后我想知道它的make_unique实现如何与分配函数临时缓冲区数组一起使用,例如以下代码。f(){autobuf=newint[n];//temporarybuffer//usebuf...delete[]buf;}这可以替换为对make_unique的一些调用,然后会使用[]-version的delete吗? 最佳答案 这是另一个解决方案(除了Mike的):#include#include#includetemplatetypenamestd::enable_if::value,std::unique_

c++ - 来自 T* 的 std::unique_ptr<T> 的构造函数是显式的背后的原因是什么?

由于std::unique_ptr提供了一种方便的方法来避免内存泄漏并确保异常安全,因此传递它们而不是原始指针是明智的。因此,一个人可能想要(成员)具有类似签名的函数std::unique_ptrfoo(somedata);不幸的是,在实现这样的功能时,不能简单地实现std::unique_ptrfoo(somedata){return{newsome_type(data)};//error}但必须改为std::unique_ptrfoo(somedata){returnstd::move(std::unique_ptr(newsome_type(data)));//awkward}因