草庐IT

stallings-Linux_process-thread_st

全部标签

c++ - boost::thread 数据结构的大小在荒谬的一面?

编译器:clang++x86-64onlinux。自从我编写任何复杂的低级系统代码以来已经有一段时间了,而且我通常针对系统原语(windows和pthreads/posix)进行编程。所以,输入和输出已经从我的内存中消失了。我目前正在使用boost::asio和boost::thread。为了模拟针对异步函数执行器的同步RPC(boost::io_service具有多个线程io::service::run'ing,其中请求是io_serviced::post'ed),我正在使用升压同步原语。出于好奇,我决定sizeof原语。这就是我所看到的。structnotification_obj

C++/boost::thread 程序在 join_all 后挂起并从 Main 返回

第一次在这里发帖,但是我已经彻底搜索了这个问题的解决方案,但没有解决方案。我有一个类,它基本上使用静态范围的线程池来计算矩阵的条目。当需要进行新的计算时,静态条件变量会发出信号。当程序结束时,一个静态bool标志被改变,主线程在退出前调用join_all。问题是当我从intmain()返回时,程序似乎在销毁静态变量期间挂起。这是执行计算的类的粗略源代码:classFunctionCalculator{public:staticvoidcreateWorkers();staticvoiddestroyWorkers();staticvoidcalcFunction();private:s

c++ - boost Asio : waiting until thread_group has processed all posted tasks?

我有一个对象,一旦创建就会在后台执行许多任务,但应该阻塞直到/所有/发布的任务完成。即:structrun_many{boost::asio::io_servicem_io_service;boost::thread_groupm_threads;boost::asio::signal_setm_signals;voidevaluate(std::stringwork,inti){/*...*/}voidrun_tasks(inttasks,std::stringwork){{boost::asio::io_service::workw(m_io_service);//for(inti

c++ - BlockingQueue 的 QWaitCondition : Destroyed while threads are still waiting

我在Qt中构建了自己的阻塞队列,但遇到了一些问题。如果我不关闭队列,那么我会在控制台中收到错误消息“QWaitCondition:线程仍在等待时已销毁”。另一方面,我在关闭队列后收到访问冲突异常(无论它是在构造函数中还是来自另一个线程)。异常发生在等待条件的wait方法中。这是我的阻塞队列:#ifndefBLOCKING_QUEUE_H#defineBLOCKING_QUEUE_H#include#include#include#include#includenamespaceConcurrency{templateclassBlockingQueue{private:QMutex_m

c++ - 在 Linux 中将 fork() + execlp 与 boost::asio 一起使用时解决重用错误

我有一个程序在TCP端口上监听特定字符串并使用execlp调用启动应用程序。我正在执行fork()以在此execlp调用之前启动子进程。在此启动后,父进程再次开始监听同一端口。我正在关闭子进程中的套接字。我在boost::asio::tcp_socket上写了一个包装器,我在绑定(bind)套接字之前将addr_reuse选项设置为true.现在我的问题是在Linux中,我在应用程序启动几次后收到地址重用错误。在我的程序中,它不断尝试接受连接(或者更准确地说,尝试安排对boost::asio::io_service的接受)直到绑定(bind),然后接受成功。所以我在这个循环中收到了错误

c++ - win32 std::thread 是否泄漏内存?

我在Windows732位下使用MinGWgcc4.8.2编译了以下代码://t.cpp#include#includeclassMine{public:Mine(){std::cout使用g++t.cpp-std=c++11-static-ggdb,并使用Dr.Memory和drmemorya.exe进行调试,我得到了以下输出:Dr.Memoryversion1.6.1739build42builtonFeb23201422:29:25Dr.Memoryresultsforpid7400:"a.exe"Applicationcmdline:"a.exe"Recorded102supp

Linux rpm命令教程:如何使用rpm命令进行软件包管理(附实例详解和注意事项)

Linuxrpm命令介绍rpm命令,全称为RedHatPackageManager,是用于管理Linux各项套件的程序。它最初是由RedHatLinux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎,逐渐受到其他发行版的采用。Linuxrpm命令适用的Linux版本rpm命令在大多数Linux发行版中都可以使用,包括但不限于RedHat,CentOS,Fedora等。如果在某些Linux发行版中无法使用,可以通过相应的包管理工具进行安装。例如,在Debian和Ubuntu中,可以使用apt-getinstallrpm进行安装。[linux@bash

c++ - 安装摩西翻译软件。错误消息 : "ld: library not found for -lboost_thread"

我正在使用Xcode6.1的MacOSX10.9.5上安装Moses翻译软件。Theinstructionssay我需要安装g++和Boost。执行此操作后,我将gitclone,“cd”到目录中,然后键入./bjam-j8。首先,我确认我具备先决条件。首先,g++(我只是单击TAB以查看可用的内容):$g++g++g++-4.9然后boost:$brewinstallboostWarning:boost-1.56.0alreadyinstalled然后我尝试安装:$./bjam-j8Tip:installtcmallocforfasterthreading.SeeBUILD-INST

linux--初学者的常用命令合集(频率比较高的)

 sudosuroot    打开root权限passwdroot     修改root密码ctrlshift+      字符变大ctrl-          字符变小cd.           返回本目录cd..           返回上一级目录cd  绝对路径    如:cd/home/kali/Desktopcd下一级目录     进入下一级目录如:cd  kalipwd            返回当前路径cat 文件名      读取文件ls-a           显示当前目录下所有文件ls-la           显示当前目录下所有文件权限 大小等详细信息cp本地文件或者其他

【Linux】Linux进度条小程序(包含色块实现)

我们再将Linux常用工具与命令都学会了之后,设计进度条这个小程序可以比较好的帮助我们进行一定程度练习与巩固视频演示目录预备知识:回车换行:缓冲区:进度条:准备工作:主题思路:代码实现:模拟实际场景:关于色块:完整代码:预备知识:在开始之前我们需要有两个预备知识,可以更好的辅助我们进行设计程序。回车换行:我们经常说的回车换行其实是两个概念回车:代表从你现在的位置到你本行起始的位置,转义字符为'\r'换行:仅仅只是从本行的当前位置到移动到下一行。一般没有此操作的转义字符,大多数情况下都是'\n'既包括了换行与回车;缓冲区:我们先运行如下代码:#includeintmain(){ printf("