|
定义一个结构体,结构体里面有个指针,指向一个数组。
然后线程1通过tx_queue_send发送这个结构体,线程2收到以后,发现结构体里面的指针内容完全不对。
我用ucosiii就是正常的。
下面是截取的代码:
- typedef struct
- {
- uint8_t Dev;
- uint8_t Type;
- uint8_t *pMsg;
- uint16_t Size;
- }SYSMSG, *PSYSMSG;
- uint8_t DataBuf[64] = {0};
- SYSMSG Sys_Msg = {0,0,DataBuf,0};
- TX_QUEUE Q_2Sys;
- uint8_t System_Buf[1024] = {0};
- tx_queue_create(&Q_2Sys,"Q_2Sys",1,System_Buf,1024);
- void QPost2Sys(void *pbuf)
- {
- UINT status;
-
- status = tx_queue_send(&Q_2Sys,pbuf,TX_NO_WAIT);
- if(status != TX_SUCCESS)
- {
- }
- }
- void QRecv2Sys(void)
- {
- UINT status;
- PSYSMSG pSysMsg;
- status = tx_queue_receive(&Q_2Sys,pSysMsg,TX_WAIT_FOREVER);
- if(status == TX_SUCCESS)
- {
-
- }
- }
复制代码
|
|