草庐IT

syscall_thread_switch

全部标签

c++ - 我怎样才能告诉 gcc 在不中断的情况下对 switch/case 语句发出警告(或失败)?

我有一个复杂的switch语句,我忘了在其中一个case的末尾放置一个break。这是完全合法的,因此我无法进入下一个案例。如果我忽略放置break语句,是否有任何方法让gcc发出警告(或者甚至更好,失败)?我意识到有许多有效的用例(我经常在我的代码中使用它们),如thisquestion中所示。,所以显然这样的警告(或失败)需要一个简单的豁免,这样我就可以轻松地说,“我确实想在这里失败。”有什么方法可以告诉gcc这样做吗? 最佳答案 在http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652

c++ - VC++ : Performance drop x20 when more threads than cpus but not under g++

简单的多线程c++11程序,其中所有线程在紧密循环中锁定相同的互斥量。当它使用8个线程时(作为逻辑cpu的数量)可以达到500万锁/秒但是只添加一个额外的线程-性能会下降到200,000/秒!编辑:在g++4.8.2(ubuntux64)下:即使有100个线程,性能也不会下降!(性能是两倍多,但那是另一回事了)-所以这似乎确实是一个特定于VC++互斥实现的问题我用下面的代码(Windows7x64)复制了它:#include#include#include#include#include#include#includeusingnamespacestd::chrono;voidthre

c++ - 带有可移动、不可复制参数的 std::thread

以下程序不在VS11beta、gcc4.5或clang3.1中构建#include#includeintmain(){std::unique_ptrp;std::threadth([](std::unique_ptr){},std::move(p));th.join();}这是因为参数类型不可复制,但实现试图复制它。据我所知,这个程序格式正确,应该可以运行。std::thread的要求似乎暗示可移动的、不可复制的参数应该在这里起作用。具体来说,它表示可调用对象和每个参数应满足MoveConstructible要求,并且INVOKE(DECAY_COPY(std::forward(f))

c++ - boost::thread - 简单示例不起作用 (C++)

为了开始使用boost::thread,我编写了一个非常简单的示例——它不起作用。谁能指出我的错误?我写了一个非常简单的仿函数类型的类来完成这项工作。它应该计算doublestd::vector的总和,并给我一种稍后获取结果的方法:classSumWorker{private:double_sum;public:SumWorker():_sum(-1.0){}voidoperator()(std::vectorconst&arr){_sum=0.0;for(std::vector::const_iteratori=arr.begin();i!=arr.end();i++){_sum+=

c++ - 'yield' 不是 'std::this_thread' 的成员

我试图让出当前线程:std::this_thread::yield();但不幸的是,GCC知道得更多:'yield'isnotamemberof'std::this_thread'我是否忘记了一些类似于D_GLIBCXX_USE_NANOSLEEP的hack,或者什么? 最佳答案 是的,这似乎是一个类似于_GLIBCXX_USE_NANOSLEEP的问题。GCC根据宏_GLIBCXX_USE_SCHED_YIELD有条件编译yield。如果您定义它,它应该可以编译。这将在GCC4.8中修复。

c++ - 在 switch 语句的条件下同时具有模板和非模板转换运算符的类

问题最初出现在thisquestion.考虑以下代码:classVar{public:operatorint()const{return0;}templateoperatorT()const{returnT();}};intmain(){Varv;switch(v){}}没有operatorint()const{return0;},g++和clangreject代码。然而,上面的代码,使用operatorint(),是acceptedbyclang但是rejected通过g++并出现以下错误:main.cpp:17:14:error:defaulttypeconversioncan't

c++ - 比较优化构建与 switch case 和多态性

我需要对两种解决方案进行性能测试-一种使用多态来执行类型切换,另一种使用switchcase来选择要执行的某些函数。我真的需要优化这段代码。我写了下面的测试用例(你可以简单地复制粘贴代码,用g++-std=c++14-O3编译它并用echo1|./a.out运行它!)如果你读了它,代码真的很简单!#include#include#include#include#include#include#includeusingnamespacestd;structprofiler{std::stringname;std::chrono::high_resolution_clock::time_p

c++ - OpenMP num_threads(1) 比没有 OpenMP 执行得更快

我在各种情况下运行过我的代码,这导致了我认为奇怪的行为。我的测试是在具有HT的双核英特尔至强处理器上进行的。没有OpenMP'#pragma'语句,总运行时间=507秒使用指定1个内核的OpenMP“#pragma”语句,总运行时间=117秒使用指定2个内核的OpenMP'#pragma'语句,总运行时间=150秒使用指定3个内核的OpenMP'#pragma'语句,总运行时间=157秒使用指定4核的OpenMP'#pragma'语句,总运行时间=144秒我想我不明白为什么注释掉我的openmp行会使程序在1个没有openmp的线程和1个有openmp的线程之间变慢很多。我要改变的是:

c++ - 错误 : 'std::this_thread' has not been declared

我尝试使用std::this_thread::sleep_for()函数但出现错误错误:“std::this_thread”尚未声明。包含标志_GLIBCXX_USE_NANOSLEEP。还需要什么来强制它工作?MinGW==>gcc版本4.7.2(GCC)中南合作:#includeintmain(){std::this_thread::sleep_for(std::chrono::seconds(3));}命令行:g++-D_GLIBCXX_USE_NANOSLEEP-std=gnu++0xssce.cpp-ossce.exe编译结果:ssce.cpp:Infunction'intm

java - Kotlin ||如何区分 View id 和 Android 中的类似 switch 语句的 onClick()?

正如我们在Android中所知道的,我们使用switch语句来区分view如下所示,我们曾经通过implementView.OnClickListener来获取onClick接口(interface)方法来执行任何任务@OverridepublicvoidonClick(Viewview){switch(view.getId()){caseR.id.imgBack:///DOSOMETHINGHEREbreak;caseR.id.btnSubmit:///DOSOMETHINGHEREbreak;}}我在Kotlin中使用相同的东西,通过实现View.OnClickListener并获