草庐IT

atomic_thread_fence

全部标签

c++ - QSocketNotifier : Can only be used with threads started with QThread error

我正在尝试使用QLocalServer作为ipc解决方案。qt的版本是4.6这是我的main.cpp:intmain(intargc,constchar*argv[]){QServertest();while(true){}}这是我的QServer类:classQServer:publicQObject{Q_OBJECTpublic:QServer();virtual~QServer();private:QLocalServer*m_server;QLocalSocket*m_connection;privateslots:voidsocket_new_connection();};Q

【STM32&RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)

硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线文章目录前言一、线程管理接口介绍二、任务:使用多线程的方式同时实现led闪烁和按键控制喇叭(扫描法)1.RT-Thread相关接口函数(1)创建和删除线程(2)初始化和脱离线程(3)启动线程(4)线程睡眠2.代码实现(1)led灯闪烁功能模块实现(2)按键控制喇叭功能模块实现(3)main()程序设计3.程序测试总结前言本章主要讲线程的工作机制和管理方法,通过实例讲解如何使用多线程完成多任务开发。一、线程管理接口介绍RT-Thread用线程控制块来描述和管理一个线

c++ - 如何将使用默认参数的函数传递给 std::thread?

所以我有gcc版本4.8.1,g++版本4.6.4,使用标志:-std=c++0x和-pthread。我将我的问题简化为显示的代码,但仍然得到原始错误。我编译了下面的内容,但是当我取消注释线程“two”的两行时,我收到代码下方显示的错误消息#include#includeusingnamespacestd;voidprint_int(intx=7);voidprint_A(){cout我试图解析错误消息,但我仍然不知道发生了什么...Infileincludedfrom/usr/include/c++/4.6/thread:39:0,fromdef_params.cpp:2:/usr/

c++ - 将 std::atomic_flag 包装在 getter/setter 中是否会使它的 "atomicity"无效?

假设我有一个包含std::atomic_flag作为私有(private)成员的类,通过getter公开。类似于以下内容(伪代码):classThing{private:std::atomic_flagready=ATOMIC_FLAG_INIT;public:isReady(){returnready.test_and_set();}}我天真的问题是:通过方法查询标志是否会将其变成非原子操作,成为非原子函数调用(或者是?)?我是否应该让我的ready标记为公共(public)成员并直接查询它? 最佳答案 不,它没有。test_an

c++ - std::atomic 加载方法在与 std::shared_ptr 一起使用时减少引用计数

我想使用std::atomic在我的代码中,以便可以自动更新shared_ptr,但是在访问shared_ptr时我遇到了问题。atomic上的load()方法似乎减少了shared_ptr上的引用计数,因此我无法在不释放对象的情况下实际使用该对象。这是显示问题的一段简化代码...typedefshared_ptrMyClassPtr;typedefatomicMyClassAtomicPtr;//1.MyClassPtrptr(newMyClass());printf("1.use_count=%d\n",ptr.use_count());//2.MyClassAtomicPtrat

c++ - move std::thread

尝试制作简单的代码片段:std::threadthreadFoo;std::thread&&threadBar=std::thread(threadFunction);threadFoo=threadBar;//thread&operator=(thread&&other);expectedtobecalled出现错误:useofdeletedfunction'std::thread&std::thread::operator=(conststd::thread&)'我将threadBar明确定义为右值引用,而不是普通引用。为什么不调用预期的运算符(operator)?如何将一个线程m

c++ - 错误 C2280 : attempting to reference a deleted function (atomic<int>)

我有一个classA带有成员变量_atomicVar类型std::atomic.#includeclassA{public:A();~A();private:std::atomic_atomicVar;};如果我构建项目,我会收到以下错误:errorC2280:'std::atomic::atomic(conststd::atomic&)':attemptingtoreferenceadeletedfunction我主要是一名C#开发人员,所以我还不了解C++的每个细节(还)。我不知道我在哪里使用atomic的复制代码.我还尝试初始化_atomicVar:std::atomic_ato

Redission 解锁unlock异常:attempt to unlock lock, not locked by current thread by node id的解决方案

问题redission解锁异常:Redission中的"attempttounlocklock,notlockedbycurrentthreadbynodeid"解决方案方案一:lock.lock(leaseTime,Unit)不设置参数,即lock.lock(),才能触发启动Redission的“看门狗”机制(守护线程)。否则若设置了参数,则到期就释放掉锁。因为:Redisson的WatchDog看门狗机制只会在未显式设置最大持锁时间才会生效。换言之,一旦调用lock方法时指定了leaseTime参数值,则该锁到期后即会自动释放。Redisson的WatchDog看门狗不会对该锁进行自动续期

c++ - CMake 链接错误 pthread:启用多线程以使用 std::thread:不允许操作

我有一个类似的错误C++Threads,std::system_error-operationnotpermitted?我正在使用完全相同的源代码并使用进行编译g++../src/main.cpp-pthread-std=c++11工作没有任何问题。因为我想在一个更大的项目中使用线程,所以我必须在CMake中使用线程。搜索解决方案后,我发现了几个代码,例如:cmake_minimum_required(VERSION2.6)project(Test)add_definitions("-std=c++11")find_package(Threads)add_executable(main

c++ - 链接器错误 - 带有 libboost_thread 的 macOS 上 undefined symbol std::string::c_str() const?

我从homebrew安装了boost1.55.0在macos小牛队上。获取链接器异常-找不到std::string::c_str(),我不明白为什么。这可能是Homebrew软件的问题吗?我尝试直接从boost编译boost1.55.0,它甚至没有在macOS上构建。这段代码:#include#include#include#includetypedefstd::unordered_mapStringMap;staticboost::thread_specific_ptr>rlist;intmain(){return0;}使用此命令行编译:g++-std=c++11main.cpp-I