添加信号槽基本实现
This commit is contained in:
54
soft/mysignal.h
Normal file
54
soft/mysignal.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#ifndef mysignal_h__
|
||||
#define mysignal_h__
|
||||
|
||||
#include "pthread.h"
|
||||
#include "stdint.h"
|
||||
#include <semaphore.h>
|
||||
|
||||
|
||||
#define emit
|
||||
#define signal void
|
||||
#define slot void
|
||||
|
||||
|
||||
typedef struct {
|
||||
void* next;
|
||||
void (*func)(void* par);
|
||||
// size_t pars[]; // 这里保存函数的参数实体
|
||||
}slot_list_with_pars;
|
||||
|
||||
typedef struct {
|
||||
pthread_mutex_t lock; /* 互斥锁定义 */
|
||||
sem_t sem;
|
||||
pthread_t tid;
|
||||
slot_list_with_pars *slot_head;
|
||||
} mythread_t;
|
||||
|
||||
typedef struct {
|
||||
void* next;
|
||||
void (*func)(void* par);
|
||||
void* slot_obj;
|
||||
mythread_t* thread;
|
||||
}slot_list;
|
||||
|
||||
typedef struct {
|
||||
pthread_mutex_t lock; /* 互斥锁定义 */
|
||||
slot_list* slot_head;
|
||||
}__SIG_OBJ;
|
||||
|
||||
#define SIG_OBJ __SIG_OBJ __sig_obj
|
||||
|
||||
|
||||
void send_slot_fun(mythread_t* self, slot_list_with_pars* slot_p);
|
||||
mythread_t* sigthread_init();
|
||||
|
||||
void _connect(void* sig_obj, void* sig_fun, mythread_t* thread, void* slot_obj, const char* slot_fun);
|
||||
|
||||
// 这个函数在signal_tmp.c里实现
|
||||
void* signal_find_slot_func(const char* name);
|
||||
|
||||
#define connect(sig_obj, sig_fun, thread, slot_obj, slot_fun) {\
|
||||
(void)slot_fun;\
|
||||
_connect(sig_obj, sig_fun, thread, slot_obj, #slot_fun);}\
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user