jjzjj

pThreads

全部标签

c++ - 哪种代码被认为是异常安全的?

能够很好地处理异常的代码称为异常安全代码?这是正确的吗?来自这里:https://codereview.stackexchange.com/a/9759/11619Youuselock/unlockpairsforthemutex.Thisisnotexceptionsafe.SoIwouldcreateanobjectthatwilldothelockintheconstructorandunlockinthedestructorthenusethistolockyourmutexs.Thiswillmakeyourcodemoreexceptionsafe.classMutexLo

c++ - pthread_create 段错误

我在我的程序中使用“pthread_create”方法,并在该方法中出现段错误。什么可能导致这个?我正在使用正确的参数类型调用此函数!这是代码:pthread_t*_daemon;void*writer(void*arg){//stuffthatdontinvolve"arg"...}intinitdevice(){if(pthread_create(_daemon,NULL,&writer,NULL)!=0)//seginthisline{cerr注意:在调用pthread_create中的writer之前,我也尝试在没有“&”的情况下运行它,而且-我们尝试向该方法发送一些void*

c++ - 如何在类函数中创建线程?

我是C++的新手。我有一个类,我想在类的函数中创建一个线程。该线程(函数)也将调用和访问类函数和变量。一开始我尝试使用Pthread,但只能在类之外工作,如果我想访问类函数/变量,我会遇到超出范围的错误。我看了一下Boost/thread,但这是不可取的,因为我不想将任何其他库添加到我的文件中(出于其他原因)。我做了一些研究,但找不到任何有用的答案。请举一些例子来指导我。非常感谢!尝试使用pthread(但我不知道如何处理我上面所说的情况):#includevoid*print(void*data){std::cout 最佳答案 您

c++ - 互斥量超出范围时会解锁吗?

简单的问题-基本上,我是否必须解锁互斥体,或者我是否可以简单地使用范围运算符并且互斥体将自动解锁?即:{pthread_mutex_lock(&myMutex);sharedResource++;}//mymutexisnowunlocked?或者我应该:{pthread_mutex_lock(&myMutex);sharedResource++;pthread_mutex_unlock(&myMutex);} 最佳答案 在您的示例中,互斥锁不会超出范围;并且编译器无法知道特定函数需要在作用域末尾调用,因此第一个示例不会解锁互斥体。

c++ - 一旦 std :thread makes into C++Ox,pthreads 会过时吗

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion显然我们仍会维护它,但一旦C++标准保证可用,它会有多大用处。随着新标准的出现,同步原语(Mutex、条件变量)会怎样?您是否认为pthread比std::thread更难掌握?

c++ - 如何用 "-pthread"而不是 "-mthread"编译 boost_thread?

我有一个操作系统,编译时没有可用的-mthread。我有-pthread。如何用-pthread而不是-mthread编译boost_thread?我当前的编译器构建日志:./b2-j1--with-threadlink=static--prefix=./install-dirreleasethreading=multi--builddir=./build-dirinstallComponentconfiguration:-chrono:notbuilding-context:notbuilding-date_time:notbuilding-exception:notbuilding

c++ - 如何安全地关闭线程?

pthread_create(&thread,NULL,AcceptLoop,(void*)this);我已经这样声明,并且在AcceptLoop函数内部我有无限while循环。我想在服务器关闭时关闭此线程。我已经阅读了pthread_cancel和pthread_join,但我不确定哪个更好更安全。我想听听一些详细的说明或教程。提前致谢。 最佳答案 你什么都不用做,只要从线程函数返回就可以干净利落地结束线程。您也可以调用pthread_exit()但我宁愿返回。pthread_cancel()可怕且复杂/难以正确处理。如果可能的话

c++ - pthread_key_t 与局部变量

我正在使用Pthread在C++中开发一个多线程程序,我需要在每个线程中分配本地内存。谷歌搜索后,我发现pthread_key_t类型是某种映射,允许您在TLS中分配内存。所以我的问题是线程函数中的局部变量和pthread_key_t有什么区别?你能给出一个pthread_key_t的正确用法示例吗? 最佳答案 线程局部存储和局部变量之间的区别在于线程局部存储不需要是函数的局部变量。一旦声明它们的函数返回,常规局部变量可能不再被访问。使用pthread_getspecific和pthread_setspecific访问的线程特定存储

c++ - 等待多线程(Posix 线程,c++)

考虑以下情况:我有一个被多个线程使用的对象foo,它可能会也可能不会重复调用foo上的方法bar()。bar()被并行执行多次是完全没问题的(也是理想的),因为它永远不会改变foo的状态。当我需要从外部(从另一个线程,而不是从“工作”线程之一)更改foo的状态时,问题就出现了——我如何以某种方式锁定foo,以便调用线程阻塞直到最后一个工作线程是用bar()完成的,所有工作线程都将在bar()处阻塞,直到我再次释放foo?很明显,我不能只使用在执行bar()期间保持锁定的互斥量,因为那样我就没有并发性了。有什么想法吗?或者对于这些类型的问题是否有更好的设计?

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

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