多线程中的单向链表
typedefstructMsgData{SLIST_ENTRYNextEntry;//下一个结点INTID;charbuff[20];}STDATA,*PSTDATA;voidCtestThreadDlg::OnBnClickedButton17(){PSLIST_ENTRYpListFirstItem,pListItem;PSLIST_HEADERpHead;//创建头结点pHead=(PSLIST_HEADER)_aligned_malloc(sizeof(SLIST_HEADER),MEMORY_ALLOCATION_ALIGNMENT);//初始化头结点InitializeSListHead(pHead);//新结点数据PSTDATAstPdata=(PSTDATA)_aligned_malloc(sizeof(STDATA),MEMORY_ALLOCATION_ALIGNMENT);stPdata->ID=1200;strcpy_s(stPdata->buff,20,"message");//添加到队列中,从头添加节点,返回前一个节点pListFirstItem=InterlockedPushEntrySList(pHead,&stPdata->NextEntry);pListItem=InterlockedPopEntrySList(pHead);//从头部取出数据PSTDATApData=(PSTDATA)pListItem;CStringstr(pData->buff);TRACE(str+_T("\n"));_aligned_free(pListItem);//释放内存InterlockedFlushSList(pHead);pListItem=InterlockedPopEntrySList(pHead);if(pListItem==NULL){TRACE(_T("已清空\n"));}_aligned_free(pHead);}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。