linux c能否实现用户自定义事件?
linux c中能实现类似java、c#中的自定义事件吗?例如两个线程A、B
A线程:往队列中写数据
B线程:从队列中读数据
c能否实现一旦队列中有数据就触发一事件告诉线程B,让B取数据,而不是让B写成死循环不停的监控队列?
什么方法能满足以上需求呢?能给个小例子更好。
Linux
C
多线程
事件
触发
分享到:
------解决方案--------------------
1 信号机制
2 回调函数,A线程有数据了,回调启动B线程读数据
------解决方案--------------------
线程之间本来就很容易可以通信,注意同步别出错就ok了
------解决方案--------------------
仅供参考//循环向a函数每次发送200个字节长度(这个是固定的)的buffer,
//a函数中需要将循环传进来的buffer,组成240字节(也是固定的)的新buffer进行处理,
//在处理的时候每次从新buffer中取两个字节打印
#ifdef WIN32
#pragma warning(disable:4996)
#endif
#include
#include
#include
#ifdef WIN32
#include
#include
#include
#define MYVOID void
#define vsnprintf _vsnprintf
#else
#include
#include
#include
#define CRITICAL_SECTION pthread_mutex_t
#define MYVOID void *
#endif
//Log{
#define MAXLOGSIZE 20000000
#define MAXLINSIZE 16000
#include
#include
#include
char logfilename1[]="MyLog1.log";
char logfilename2[]="MyLog2.log";
static char logstr[MAXLINSIZE+1];
char datestr[16];
char timestr[16];
char mss[4];
CRITICAL_SECTION cs_log;
FILE *flog;
#ifdef WIN32
void Lock(CRITICAL_SECTION *l) {