草庐IT

dispatch_main_queue_callback

全部标签

c++ - 我可以在已经由 main 创建的 pthread 中创建一个 pthread 吗?

如果我在主函数创建的pthread中创建pthread_create会出错吗?如果,我可以,那我该管什么???重要......:我正在做一个套接字编程,我在不同的端口上打开了5个线程,每个线程都在监听端口,每当我收到一条消息时,我想创建一个线程来接收消息和使用pwrite写入文件。那么,我有几个问题,你能帮我吗???如果不是,那么在线程内创建线程的另一种解决方案是什么??或者它会给我一个段错误吗???或者我会遇到一些竞争条件.... 最佳答案 pthread_create创建一个新线程。独立于它在哪里叫。并在监听时为连接创建一个新线

C++ - 在 main() 函数中定义变量时遇到问题

我正在尝试从C++VisualStudio2010中的外部库定义一个变量。只有当我将它放在主函数之外时它才有效。此代码崩溃:#include"StdAfx.h"#include#includeintmain(){ogdf::Graphg;ogdf::randomSimpleGraph(g,10,20);return0;}它给了我一个未处理的异常:访问冲突。但是,如果它在main函数之外,它可以正常工作:#include"StdAfx.h"#include#includeogdf::Graphg;intmain(){ogdf::randomSimpleGraph(g,10,20);ret

C++11 main() 返回时终止线程?

我听说“现代操作系统会在关闭进程时清除进程创建的所有线程”,但是当我返回main()时,我遇到了这些错误:1)ThisapplicationhasrequestedtheRuntimetoterminateitinanunusualway.Pleasecontacttheapplication'ssupportteamformoreinformation.2)terminatecalledwithoutanactiveexception我的实现看起来像这样(例如,我现在写的是对糟糕的实现感到抱歉):voidprocess(intid){while(true){std::this_thr

c++ - 为什么 std::cout << main << std::endl 打印 1?

这个问题在这里已经有了答案:Whycout(2个答案)Howtoprintfunctionpointerswithcout?(7个答案)g++"calling"afunctionwithoutparenthesis(notf()butf;).Whydoesitalwaysreturn1?(2个答案)关闭7年前。#includeintmain(){std::cout为什么它在命令行中打印1?

c++ - 在 C++ main() 执行之前处理 Mac OS X 文件打开事件

我在谷歌上搜索了很多,但仍然找不到好的解决方案:/因此,我正在将一个复杂的Qt5应用程序(某些网络服务的客户端)移植到MacOSX(10.7.0“Lion”及更高版本)。我需要处理像*.xyz这样的自定义文件和像xyz://这样的自定义URL方案。好的,Qt5有QFileOpenEvent类来处理OSX适当的事件。但是:此事件仅在应用程序事件循环开始后才到达(显然)!而且我需要“捕获”并处理OSX的文件打开事件BEFOREmain启动,因为程序逻辑旨在处理命令行参数仅处理。简化的main函数代码:intmain(intargc,char[]*argv){QApplicationapp(

c++ - pre-main 全局初始化程序是否保证运行单线程?

例如,以下代码段中的node::node()构造函数访问全局变量node::count和::tail没有任何多线程保护。C++标准是否保证输出始终是012的排列(无论顺序如何)?#includestructnode*tail;structnode{staticintcount;intindex;node*prev;node(){index=count++;prev=tail;tail=this;}};intnode::count;nodeone,two[2];intmain(intargc,char*argv[]){for(node*p=tail;p;p=p->prev)printf(

c++ - 如何在 C++ 中忽略动态链接库中的 main 方法

在我们的应用程序中,我们使用了几个动态链接库。我们最近更新了其中一个库的版本。自这个新版本以来,该库的开发人员提供了一个主要方法(除了打印HelloWorld之外什么都不做)。问题是我们使用的是GTest和GMock,它们生成自己的main方法。当我们现在运行我们的测试二进制文件时,我们只得到“HelloWorld”,所以采用了错误的main方法。我们如何强制使用测试的主要方法?更新:这似乎是一个GMock/GTest问题。main方法正常生成,但不是这样,因为它现在找到了一个已经存在的main方法。 最佳答案 您的情况没有解决办法

c++ - 双重分派(dispatch)和模板类

我有一个C++代码,我在其中比较从一个公共(public)母类派生的不同类,Foo.如果两个类没有相同的类型,比较总是false.否则,它会比较特定于该类的一些内部数据。我的代码是这样的:classBar;classBaz;classFoo{public:virtualboolisSame(Foo*)=0;virtualboolisSameSpecific(Bar*){returnfalse;}virtualboolisSameSpecific(Baz*){returnfalse;}};classBar:publicFoo{public:boolisSame(Foo*foo){retu

c++ - main() 中下面 'i' 的类型。为什么是int&?

我知道main()中i的类型是int&。这就是必须对其进行初始化的原因。int&f(){staticinti=1;returni;}intmain(){decltype(f())i=f();}但使用标准中的段落5p5,我得出结论,表达式f()的类型为int,因为引用被删除了。从7.1.6.2p4开始,假设从函数返回中删除了引用,怎么能说表达式f()是左值? 最佳答案 在评估表达式的类型时(根据§5/5),引用被删除,但这不会改变函数调用表达式f()是一个的事实左值。根据C++11标准的第5.2.2/10段:Afunctioncall

c++ - g++ : can't link with a main executable file

我正在开发一个使用统计攻击来破解wepkey的应用程序。当我用我的makefile编译时(如上)我得到这个错误:ld:can'tlinkwithamainexecutablefile'execStatAttack'forarchitecturex86_64clang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)make:*[statAttack]Error1我的项目包含那些文件:statAttack.cpp:包含主要功能,使用上面的文件rc4.h+rc4.cpp:具有那些功能#include#include#i