草庐IT

thread_safe

全部标签

c++ - thread::get_id (C++11) 是免费的吗?

我想测试调用我的一个类的不同函数的线程。我有一个关键时间线程,我不希望任何人调用一个可能调用new的函数,以便从该线程调用。但是,由于这2个函数是公共(public)的,我无法通过语言强制执行。我的想法是测试线程id。假设我可以确保初始化线程ID的调用在正确的线程中,我只需要在其他调用中调用thread::get_id()并与我保存的线程ID进行比较。问题是我也想在关键线程中测试这个ID,但我不能锁定那个线程。因此我的问题是:thread::get_id()是否没有锁定(最糟糕的执行时间是什么时候)? 最佳答案 标准不保证threa

RT-Thread 软件包-软件包分类-IoT-WebTerminal①

RT-Thread软件包-软件包分类-IoT-WebTerminal①RT-Thread软件包-软件包分类-IoT-WebTerminal①WebTerminal让你的终端在浏览器上跑起来1、WebTerminal是什么2、依赖信息3、如何使用3.1初始化3.2启动3.3传送资源文件3.4使用WebFinsh示例代码维护人:RT-Thread软件包-软件包分类-IoT-WebTerminal①WebTerminal让你的终端在浏览器上跑起来1、WebTerminal是什么WebTerminal是一款针对RT-ThreadRTOS的库。启动后,可以通过网页访问设备的控制台(命令行)系统,实现设备

c++ - 使用 make_shared<std::thread> 创建 shared_ptr<std::thread> 的实例

考虑以下代码:classA{....shared_ptrmThread;voidStep();voidLaunchTrhead();}voidA::LaunchThread(){...mThread=make_shared(Step);//Thislinegivesanerror...}voidA::Step(){...}我正在尝试初始化共享指针mThread以便它调用函数Step。但是,编译器给我错误“类型引用的无效初始化...来自类型‘未解析的重载函数类型’的表达式”。显然我在做一些愚蠢的事情,但我不能指责它。有人可以帮忙吗?提前致谢! 最佳答案

MySQL报错:Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)

1.要对MySQL数据库清除原来已有的数据,重新初始化数据库。Linux系统:CentOS7.6,数据库:MySQL5.6.40。先将mysql进程强行停止掉。pkillmysqld2. 对数据库进行清理:[root@mv172~]#rm-rf/application/mysql/data/*[root@mv172~]#\rm-rf/data/mysql/*  3. 配置文件安装在/application/mysql-5.6.40/my.cnf[mysqld]basedir=/application/mysqldatadir=/application/mysql/datasocket=/tmp

c++ - 在 MS Visual Studio 2017 中将 boost::thread 与 CMake 一起使用会导致两个编译器错误

我想在我的项目中使用boost::thread并且我使用CMake作为构建工具。然而,即使是非常简单的设置也会导致两个编译器错误:main.cpp#includeintmain(){boost::threadt;return0;}CMakeLists.txtcmake_minimum_required(VERSION2.6)project(ThreadTest)set(Boost_USE_STATIC_LIBSOFF)set(Boost_USE_MULTITHREADEDON)set(Boost_USE_STATIC_RUNTIMEOFF)find_package(Boost1.58.

c++ - Visual Studio 2010 中的 boost::thread 编译错误

我在很长一段时间内第一次尝试使用boost,当我包含boost/thread.hppheader时,我在boost本身内部遇到编译错误:c:\myproj\boost_1_46_0\boost\thread\win32\thread_heap_alloc.hpp(97):errorC2061:syntaxerror:identifier'heap_memoryc:\myproj\boost_1_46_0\boost\thread\detail\thread.hpp(134):seereferencetofunctiontemplateinstantiation'T*boost::det

c++ - 链接 boost::thread

我正在尝试使用boost库学习一些东西,但是当我尝试编译包含boost::threads的东西时遇到了问题。我在链接过程中遇到错误,消息如下:/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/bin/ld:cannotfind-lboost-thread但这很奇怪,因为只有当我用普通用户编译时才会发生这种情况,使用root我可以毫无问题地编译。提前致谢。 最佳答案 包含#include其他链接器标志-lboost_system-lboost_

c++ - debian 和 std::thread c++ 的即时段错误

遇到这个问题-在标题中..我有这个代码:#include#includevoidmy_thread_func(){std::cout摘自网络某处。编译器选项-pthread-std=gnu++0x(也试过-std=c++0x)而且我有段错误。一切都在vmBox上的Debian上。我之前已经启动了其他代码,并且它们有效。突然间,我在所有工作应用程序中使用std::thread的线程上出现段错误。编辑:这是来自gdb:(gdb)where#00x00000000in??()#10x08048dc9inthread(this=0xbffff3fc,__f=0x8048b9f)at/usr/i

c++ - OpenMP Mac OSX Lion c++ 链接器错误 Undefined symbols for architecture x86_64 : "_omp_get_thread_num"

我在互联网上的任何地方都找不到这个问题。所以我的链接器错误是:Undefinedsymbolsforarchitecturex86_64:"_omp_get_thread_num()"这是我的代码:intnthreads;inttid;#pragmaompparallelprivate(tid){tid=omp_get_thread_num();if(tid==0){nthreads=omp_get_num_threads();printf("numberofthreads:%d\n",nthreads);}} 最佳答案 看起来你忘

C++:具有 `std::lock_guard` 的互斥量是否足以同步两个 `std::thread`?

我的问题是基于下面的C++代码示例#include#include#include#includeclassClassUtility{public:ClassUtility(){}~ClassUtility(){}voiddo_something(){std::coutlock(g_mutex);std::coutlock(g_mutex);std::cout如果需要,这更像是一个问题,目的是让我的理解更清楚,并获取std::condition_variable的示例用法。我有2个C++std::thread,它们在main方法中启动。它是osx上的控制台应用程序。所以使用clang编