草庐IT

syscall_thread_switch

全部标签

c++ - C语言中函数中的switch指针

如何在函数中切换指针?voidChangePointers(int*p_intP1,int*p_intP2);intmain(){inti=100,j=500;int*intP1,*intP2;/*pointers*/intP1=&i;intP2=&j;printf("%d\n",*intP1);/*prints100(i)*/printf("%d\n",*intP2);/*prints500(j)*/ChangePointers(intP1,intP2);printf("%d\n",*intP1);/*stillprints100,wouldlikeitswappedbynow*/p

c++ - 将 boost::thread 与 C++11 std::mutex 混合使用是否安全?

在通过boost启动其线程的程序中使用std::mutex及其同类是否安全?(使用std::thread不是我的选择(我认为),因为应用程序需要大量堆栈空间,并且在某些平台上需要在创建时覆盖默认堆栈大小。) 最佳答案 是的,您可以在使用boost::thread创建的线程中使用std::mutex。 关于c++-将boost::thread与C++11std::mutex混合使用是否安全?,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 为什么这个简单的 lambda 在 std::thread 中始终比在 gcc 4.9.2 的 main 函数中运行得更快?

以下代码片段采用一个命令行参数,该参数表示要生成的线程数以同时运行一个简单的for循环。如果传递的参数为0,则不会生成std::thread。在gcc4.9.2上,./snippet0比./snippet1平均花费10%,即生成一个std的版本::thread执行循环比仅在main中执行循环的版本更快。有人知道这是怎么回事吗?clang-4根本没有表现出这种行为(带有一个std::thread的版本较慢),gcc6.2具有带有一个std::thread的版本运行得稍微慢一点更快(以十次试验中花费的最少时间作为测量值)。这是片段:ScopedNanoTimer只是一个简单的RAII计时器

c++ - 如何在没有 __thread 的情况下创建 pthread 特定变量

我正在维护一个库,该库具有需要线程特定变量的函数。由于gcc4.2中的错误,如果我定义x中的静态__thread;当从PERL通过未命名的API调用库函数时,它挂起。我想使用pthread_key_create()定义线程局部变量,但我需要这样做在库中,创建线程时我没有收到任何特殊调用。如何创建一个线程局部变量,只有当它不存在时?有点像pthread_key_ttlsKey=0;intx;myfunc(){if(pthread_key_t==0){pthread_key_create(&tlsKey,NULL);pthread_setspecific(tlsKey,&x);}int&m

c++ - switch 语句的格式化

假设我的光标位置位于右向大小写花括号的右侧,如下所示:现在,如果我按下enter,我希望它自动将光标对齐两个选项卡,就像break语句一样。但它的作用是这样的:它添加了可笑的五个标签!知道VisualStudio有大量设置后,我导航到Tools::Settings::TextEditor::C/C++::Formatting::Indentation,然后看到以下窗口:但是以任何组合更改突出显示的选项实际上根本不会影响缩进!其他选项似乎都不适用于switch语句,所以我不知道该怎么做。如何在不禁用自动格式化的情况下使其不缩进5个空格?而且我可能会补充说,它不仅在我在花括号末尾按Ente

c++ - std::thread::id 的 std::operator== 中的段错误

我遇到了一个我不确定如何解决的问题。我认为这是GCC和/或libstdc++中的一个问题。我正在运行带有GCC4.8.2-19ubuntu1、libstdc++3.4.19(我相信?Howdoyoufindwhatversionoflibstdc++libraryisinstalledonyourlinuxmachine?)和boost1.55的Ubuntu14.04LTS。代码如下://http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/tutorial.html//withaslightmodificationtoe

c++ - std::thread 可能导致无法使用的堆栈跟踪

这个问题与所谓的std::thread缺点有关。昨天随便翻了一下流行的开源分布式代理envoy来福车。当我研究他们的线程部分时,我偶然发现了一条引起我注意的评论。comment说如下:Wrapperforapthreadthread.Wedon'tusestd::threadbecauseiteatsexceptionsandleadstounusablestacktraces我不确定吃掉异常和不可用的堆栈跟踪是什么意思。谁能解释它的含义以及为什么std::thread导致不可靠的堆栈跟踪? 最佳答案 大概他们有一些自定义的异常处理

c++ - 将编译器标志传递给需要编译的 boost 库(例如 Thread)

所以我知道boost库主要是仅包含头文件的,但也有一些需要编译,例如Boost.Thread。在Darwin中,我如何编译它们并传递-m32标志以便将它们编译成32位(i386)二进制文件?有一个我从未听说过的Jamroot东西,我完全不确定从哪里开始。澄清:我不是在问如何使用-m32标志编译程序并使用boost库。我在问如何使用-m32标志自己编译Boost库。 最佳答案 要指定编译的架构,请在调用b2时指定architecture特性。要指定还没有内置功能的编译器选项,请在调用b2时指定cxxflags功能。要指定还没有内置功能

c++ - 使用boost::thread的Actor计算模型

我正在尝试使用boost::thread在C++上的线程上实现Actor计算模型。但是程序在执行过程中抛出了奇怪的异常。异常不稳定,有时程序会以正确的方式工作。这是我的代码:actor.hppclassActor{public:typedefboost::functionJob;private:std::queued_jobQueue;boost::mutexd_jobQueueMutex;boost::condition_variabled_hasJob;boost::atomicd_keepWorkerRunning;boost::threadd_worker;voidworker

c++ - std::thread::hardware_concurrency 和静态初始化

这个全局函数是否会遭受静态初始化失败?templatevoidParallelFor(intiIni,intiFin,TFnFn){staticconstunsignedintNThread=std::thread::hardware_concurrency();//...} 最佳答案 Maythisglobalfunctionsufferfromstaticinitializationfiasco?不,不会。你很安全……:-)引用C++标准草案(强调我的)...$6.7:4:Dynamicinitializationofabloc