草庐IT

get_lock

全部标签

C++ Linux : error: ‘move’ is not a member of ‘std’ how to get around it?

所以在我的VS2010上我可以编译如下代码:boost::shared_ptrinternal_thread;boost::packaged_taskinternal_task_w(boost::bind(&thread_pool::internal_run,this,internal_thread));internal_thread=boost::shared_ptr(newboost::thread(std::move(internal_task_w)));前两行在boost1.47.0和linux上没问题...但是在std::move上它给出了error:‘move’isnota

c++ - 如何在 boost::unique_lock<boost::mutex> 上尝试锁定

根据标题,如何在boost::unique_lock上尝试锁定?我有这段代码:voidmySafeFunct(){if(myMutex.try_lock()==false){return-1;}//mutexownershipisautomaticallyacquired//dostuffsafelymyMutex.unlock();}现在我想使用unique_lock(它也是一个作用域互斥体)而不是普通的boost::mutex。我希望这样可以避免函数体中的所有unlock()调用。 最佳答案 您可以使用Deferconstruc

c++ - C/C++ : how to get integer unix timestamp of build time (not string)

我正在尝试实现非常微不足道的事情:我需要存储构建时间的整数32位unix时间戳,但是我找到的所有宏(__DATE__,__TIME__,__TIMESTAMP__)扩展为字符串,而不是整数。看来,我们只是没有它(这对我来说很奇怪)。我真的想要整数,而不是字符串。获得它的最佳做法是什么?更新:附带说明:我做嵌入式的东西,所以我没有足够的资源(比如128KB的闪存),因此解析字符串真的是个坏主意。我为什么需要它:我只需要每个Beta版本都有唯一的版本号。首先,hex文件将被命名为my-firmware-v2-33-BETA-1397315745.hex,其次,当我需要在设备屏幕上显示当前版

c++ - OpenMAX 和 NDK : Where I can get the surface?

我正在编写一个显示视频的应用程序。该应用程序是使用AndroidNDK和JNI编写的。我想使用OpenMAX。在OpenMAX示例中,它从Java检索表面,但我可以从哪里获得要渲染的表面?我只能通过applicationContext获得nativeWindow。例子:voidJava_com_example_nativemedia_NativeMedia_setSurface(JNIEnv*env,jclassclazz,jobjectsurface){theNativeWindow=ANativeWindow_fromSurface(env,surface);}但我没有表面。谢谢

c++ - std::lock_guard<std::mutex> 施工段错误?

我正在尝试使用std::mutex和std::lock_guard访问共享的std::queue。mutex(pending_md_mtx_)是另一个对象(其地址有效)的成员变量。我的代码似乎在lock_guard的构造上出现了段错误。有什么想法吗?我应该改用std::unique_lock(或其他对象)吗?在UbuntuLinux下运行GCC4.6(--std=c++0x)。我无法发布整个类(class),但只能访问下面列出的互斥锁和队列。templateclassDriver{public:templateDriver(Args&&...args):listener_(std::f

HTTP中POST、GET、PUT、DELETE方式的区别

GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求

C++ weak_ptr.lock() 段错误

所以我有这个函数来添加监听器,它转换一个类的共享指针,以便我稍后在收到通知时可以调用它。voidregisterListener(std::shared_ptrlistener){if(!listener){qCWarning(OBSERVER_LOGGER)lock()){if(listener==shared){return;}iter++;}else{iter=listeners.erase(iter);}}autoweak=std::weak_ptr(listener);listeners.push_back(weak);}voidnotify(std::function)>o

c++ - 调用C++成员函数指针: this-pointer gets corrupted

我需要将一些成员函数指针转换为void*指针(因为我需要将它们压入Lua堆栈,但问题与Lua无关)。我使用union来做到这一点。但是,当我将成员函数指针转换为void*并再次返回,然后尝试使用该类的实例调用该指针时,this指针会损坏。奇怪的是,如果我将void*指针转换回C风格的函数指针,并将指向该类的指针作为第一个参数,这个问题就不会发生。这是演示问题的一段代码:#includeusingnamespacestd;classtest{inta;public:voidtellSomething(){coutworks//callwithCstylefunctionpointerin

基于beast库搭建http服务器,并实现get和post请求交互(附源代码)

文章目录1Beast简介2搭建流程2.1boost和jsoncpp下载和安装2.2项目创建和配置2.3代码2.4测试3源代码1Beast简介Beast是Boost中关于http(s)/websocket(s)的库,首发于boost1.66(2016年),是比较新的库,它主要包含了http、websocket协议的解析(反序列化)和封装(序列化)以及关于网络的操作,它以asio为基础,但似乎又想隔离Asio。本文从0到1详细描述其搭建步骤以及思路。2搭建流程2.1boost和jsoncpp下载和安装提前下载好这两个,下载和准备工作,参下面这两篇文章,Windows下Boost库的安装与使用C++

c++ - C++11 中的 BOOST scoped_lock 替换

我面临这样一种情况,我必须用C++11中的等效项替换BOOSTscoped_lock。在visualstudio2013下。由于c++11不支持scoped_lock,我不确定下面的替换代码是什么。我应该选择lock_guard还是try_lock?boost::mutex::scoped_lockobjectLock(ObjectVectorMutex,boost::try_to_lock);if(objectLock){//...}在代码中我有以下“等待”语句if(ObjectsCollection.empty()){//Thisiswherewewaittilsomethingi