我的应用时这样的:主线程创建线程用于检测按键是否按下,然后主线程while(1)循环,不断地采集摄像头的数据在屏幕上显示,一旦检测到按键按下,则拍照,保存图片。问下,这种线程间的通信可以采用消息队列好还是采用全局变量好?平台环境是linux。 我的疑问是:linux下的消息队列一般是用于进程间通信,而且msgrcv是阻塞的。如果在while循环内调用msgrcv,阻塞的话,那么就录像就会停止。应用的话,我用全局变量来做,加了锁,没...
本帖最后由 zqy1005 于 2010-06-16 15:03 编辑
RT 好了 我上代码 然后再进一步叙述我的发问[code]
#include
程序原理是这样: 每次客户端去连接该程序时,就去创建一个新的线程。 即一个客户端对应一个线程。 而这一个线程里面后面又创建了两个子线程,这两子线程的作用分别是记录向各程序所发的命令和该程序收到的数据。 现在就是在这两个线程实现函数定义一个全局变量a int a; 然后在send() { if(a==1) 记录东西; } recv() { if(匹配时) a=1; } 就是说当接收数据与某东西相匹配时候,a=1,而这时候send()...
流程: 主线程-->sigsetjmp() --> pthread_create() --> do other things ... \ -> 子线程 --> siglongjmp() 子线程jump后是不是程序回到setjmp时的状态? 还是会循环的派生出很多线程出来?
我的每个线程都要定时接收client的#define ALIVE *** 消息 ,到时间没接收到就认为client已经断线,close(fd).现在想用 sleep + 计数 或者alarm 但不知道sleep 和alarm 只作用于当前线程还是整个进程,
Turbo Linux 8.0平台下的多线程程序,我希望在线程中sleep数秒,在网上看到这样的描述: =============== 除了使用 delay 来达成同步的效果外,另一个错误发生在 sleep 系统呼叫;如同exit 对 process 的影响一样,当 thread 呼叫 sleep 时,讲导致整个 process 停下来。这表示所有属于这个 process 的 thread 也将跟着停顿下来。因此在上面这个程式中,呼叫 sleep 除了平白让程序慢了20秒,并不会有什么额外影响。...
Turbo Linux 8.0平台下的多线程程序,我希望在线程中sleep数秒,在网上看到这样的描述: =============== 除了使用 delay 来达成同步的效果外,另一个错误发生在 sleep 系统呼叫;如同exit 对 process 的影响一样,当 thread 呼叫 sleep 时,讲导致整个 process 停下来。这表示所有属于这个 process 的 thread 也将跟着停顿下来。因此在上面这个程式中,呼叫 sleep 除了平白让程序慢了20秒,并不会有什么额外影响。...
大家好,小弟碰到了这个一个问题: 在GUI使用WindowsProc操作全局变量时报错,其中多个窗口都使用了WindowsProc做为消息定阅的处理函数,而多个窗口可能收到消息并且马上处理同一份全局数据,所以GUI报错,还请大家给想个好办法解决 小弟想过几种方法, 1:临界区 CCriticalSection,该方法是用来解决多个线程处理用一份数据的,不知能不能解决这个问题 2:互斥 CMutex ,用来多线程多进程数据同步加锁处理,没试过,不知道能不能解决函数操作...
#!/bin/perl use IO::Socket; use threads; use strict; my $ipHead="192.168.4."; our @iplist=(); my @ips; for(my $i=1;$i<255;$i++){push(@ips,$ipHead."$i");} my $thread; my @threads; print localtime."\n"; for(my $j=0;$j<@ips;$j++){$threads[$j]=threads->new(\&portScaner,$ips[$j]);} foreach my $threadinstance(@threads){$threadinstance->join();} #foreach my $ip(@ips){&portScaner($ip);} print localtim...