Articles of 多

例外:bus.Bus不可用Odoo 8多处理,nginx作为代理服务器

我正在使用nginx作为代理服务器的多处理模式下的Odoo 8,我读了很多有关这个错误的问题,但我仍然无法解决我的问题,我认为我不能在一个gevent中运行odoo模式,我已经configuration了longpooling位置的nginx很多职位说,我的configuration如下: – nginxconfiguration: – upstream odoo8 { server 127.0.0.1:8069 weight=1 fail_timeout=0; } upstream odoo8-im { server 127.0.0.1:8072 weight=1 fail_timeout=0; } server { listen 80; server_name 138.201.xx.xx; access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; location /longpolling { proxy_pass http://odoo8-im; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; # set headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; […]

Bash进程replace背景与作业控制

我有一个处理一批20MiB CSV文件的脚本,可以select压缩到4MiB左右。 有成千上万的文件和处理每个单独需要大约30秒; 读取一个未压缩的文件或者一个压缩文件,并且解压缩是“几乎是即时的”,高度暗示该过程可以在过程级别上并行化。 事实上,使用复杂的Rubystream水线就是这样做的。 不过,我试图用bash把Ruby代码分解成更小的部分。 为了控制工作,我想出了这个bash函数 wait_until_job_available() { maximum_jobs=${MAXIMUM_JOBS} [ $# -eq 0 ] || maximum_jobs="${1}" exit_status=0 RUNNING_JOBS=( $(jobs -p) ) while [ ${maximum_jobs} -le ${#RUNNING_JOBS[@]} ] && [ 0 -eq "${exit_status}" ] do # `wait -n` requires bash 4.3 which is unfortunately not available on several recent RHEL-based Linux distributions such as Oracle […]

打电话给shmat两次

我的程序有2个线程,我使用共享内存在两者之间进行通信。 每个线程都有一个'init'方法。 在init方法中,我调用'shmget'和'shmat'来获取共享内存段并附加到局部variables。 一部分代码如下所示: Thread 1 (which runs first): void init() { this->segment_id = shmget(SAME_KEY,SAME_SIZE,IPC_CREAT|S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH); this->data = shmat(this->segment_id,0,0); } Thread 2 (which runs after thread 1): void init() { this->segment_id = shmget(SAME_KEY,SAME_SIZE,0); this->data = shmat(this->segment_id,0,0); } 程序正在运行,但它给出了意想不到的结果。 我担心的是,在第二个线程中调用“shmat”可能会导致线程1中的“数据”无法访问或出现某种故障。 事实是,在线程1中,我可以访问整个共享段,但在线程2中,我只能访问前16个字节,所以我不知道发生了什么。 这是否意味着每个共享内存段可以一次连接到一个位置? 可以两次调用'shmat'来使共享内存可以从不同的指针访问吗?

一个pthreads程序的竞争条件可以完全崩溃OS或X?

或者应该先看看所涉及的驱动程序(例如游戏中的OpenGL驱动程序)或X服务器,还是内核错误? 这个例子很简单,两个线程可能同时写同一个variables。 这能触发如此大的locking吗?

串口通信C / C ++ Linux线程安全吗?

我的问题很简单。 在Linux下,读写串口是否线程安全? 我可以同时从不同的线程读写吗? 甚至有可能同时做2个写入? 我不打算这样做,但这可能是其他人感兴趣的。 我只有一个读取线程和另一个写入线程。 没有什么可以find关于这个话题。 更多关于细节 – 我使用open()获得的文件描述符上的write()和read() open() ; 我正在同时这样做。 谢谢大家! 罗埃尔

multithreading进程的fork:所有进程内存被复制?

我偶然发现了一篇文章,描述了使用线程分叉进程的陷阱。 作者提到,当fork在multithreading进程上完成时,整个进程内存被复制到subprocess(即没有发生写时复制)。 这是对的吗? 我试图在内核源代码中查找它,但是在发生这种情况时没有find地方。 我正在使用CentOS 6.3(内核2.6.32-279.22.1.el6.x86_64)。

Openwrt允许组播stream量

我在设备上运行openwrt,并有一个python脚本来侦听和打印239.2.1.1上的组播stream量。 然而,没有任何东西正在打印到屏幕上,我相信这是一个防火墙问题。 如何确保在运行openwrt的lan接口上允许组播stream量?

如何在Linux下高效运行短暂的asynchronous任务?

我正试图在Linux下在<1 ms内完成一项任务,以满足软实时要求。 目前我正在使用带有4-8个线程的pthreads来尝试实现这一目标,但是看起来linux下的pthreads开销和延迟似乎并不适合短时间任务( pthread_create和pthread_join +奇怪的非确定性行为,而线程正在运行,可以增加100-200μs更多)。 所以我想知道是否有其他方法可靠地运行短asynchronous任务,并具有相当低的延迟。 任务通常<500微秒,我需要他们在1毫秒内完成。 我可以直接以某种方式直接使用内核线程(kthreads)(例如使用共享内存作为任务数据)? 或者可能是基于中断的东西? 背景信息 我已经尝试在Linux上使用pthreads调度选项。 无论线程的优先级如何, SCHED_FIFO和SCHED_RR都会使事情变得更糟。 设置线程关联( pthread_set_affinity_np )虽然有点帮助,但是可以减less线程之间的线程迁移。 当前的代码也已经在Mac OS X(基于BSD和Mach内核)上testing过了 – 它可以很好地工作在pthread上,并且很容易满足<1 ms的要求。 看来Linux上的pthreads对于短时线程来说并不是很好的优化。 根据这篇文章: “Linux调度程序:一个浪费的核心十年” – Linux上的pthreads有许多问题,这似乎是由于在Linux调度程序中引入了多核心支持的随意方式。 我的问题似乎并没有与论文中提到的四个问题中的任何一个有关,但它确实暗示Linux上的线程可能是一个策略的蛋。

应用于线程的延迟优先级更改

我想编写一个程序,其中几个工作线程应该处理不同优先级的不同任务。 大任务将以低优先级和小任务进行处理,优先级非常高。 在一个完美的世界中,我会简单地为每种任务设置不同的优先级,但是由于它比Windows上可用的优先级更多,我想我必须dynamic设置线程优先级。 我认为应该有一个最高优先级的主线程,作为一种调度器dynamic地设置工作线程的优先级。 但是我想知道当我调用SetThreadPriority()时,在Windows上实际发生了什么,特别是操作系统考虑了优先级更改的速度。 理想情况下,我需要在<1 ms内提高“小任务线程”的优先级。 这可能吗? 有什么办法来改变操作系统的延迟(如果有的话)对优先级改变作出反应吗?

多个线程周期性地更新全局variables,而第三个线程等待读取

我有两个线程A,B定期更新两个全局传感器读取variables,它们执行相同的例程。 第三个线程C会在更新后立即对这些值进行一些计算。 我设置了一些条件variables,当A和B都更新全局variables时,C将立即读取。 我担心线程C错过了一些传感器读数,因为它在循环的轮询安排在新的A,B更新后被使用。 我不确定我的担忧是否有必要,因为我是一个新手。 我的开发环境是embedded式Linux板,目前我正在学习pthread。 有没有比为每个全局variables设置两个条件variables更好的方法。