Windows API实现的栈及使用(支持线程安全,以原子方式操作)
来源:互联网 发布:权志龙用什么软件直播 编辑:程序博客网 时间:2024/06/05 18:12
InitializeSListHead:创建一个空栈。
InterlockedPushEntrySList:在栈顶添加一个元素。
InterlockedPopEntrySList:移除位于栈顶的元素并将它返回。
InterlockedFlushSList:清空栈。
QueryDepthSList:返回栈中元素的数量。
使用方法:
#include <windows.h>#include <malloc.h>// Structure to be used for a list item. Typically, the first member // is of type SINGLE_LIST_ENTRY. Additional members are used for data. // Here, the data is simply a signature for testing purposes. typedef struct _PROGRAM_ITEM { SINGLE_LIST_ENTRY ItemEntry; ULONG Signature; } PROGRAM_ITEM, *PPROGRAM_ITEM;void main( ){ ULONG Count; PSINGLE_LIST_ENTRY FirstEntry, ListEntry; SLIST_HEADER ListHead; PPROGRAM_ITEM ProgramItem; // Initialize the list header. InitializeSListHead(&ListHead); // Insert 10 items into the list. for( Count = 1; Count <= 10; Count += 1 ) { ProgramItem = (PPROGRAM_ITEM)malloc(sizeof(*ProgramItem)); ProgramItem->Signature = Count; FirstEntry = InterlockedPushEntrySList(&ListHead, &ProgramItem->ItemEntry); } // Remove 10 items from the list. for( Count = 10; Count >= 1; Count -= 1 ) { ListEntry = InterlockedPopEntrySList(&ListHead); } // Flush the list and verify that the items are gone. ListEntry = InterlockedFlushSList(&ListHead); FirstEntry = InterlockedPopEntrySList(&ListHead); if (FirstEntry != NULL) { // Error - list is not empty. }}
0 0
- Windows API实现的栈及使用(支持线程安全,以原子方式操作)
- Windows API 原子操作
- 使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件
- 原子操作及线程同步
- 原子操作及线程同步
- Java 并发编程(三)为线程安全类中添加新的原子操作
- Java 并发编程(三)为线程安全类中添加新的原子操作
- volatile关键字,原子操作,线程安全,死锁
- Java 线程安全的单例模式实现方式(一)及解释
- JVM之线程安全、原子性实现
- windows下线程同步方式(原子锁)
- x86平台原子操作API的实现原理
- 一个支持线程安全的模板方式实现的内存分配器
- 以指定原子操作实现加减乘法
- 线程池的使用实现窗口控件安全操作
- java 线程安全的实现方式
- 实现线程安全的几种方式
- 使用C11的原子操作来实现线性单链表操作
- 类
- 欢迎使用CSDN-markdown编辑器
- 四种复制方法效率比较
- css
- Java并发系列-23、阻塞队列
- Windows API实现的栈及使用(支持线程安全,以原子方式操作)
- 学习web程序员角度ubuntu自修速学课程安装flash player笔记
- echarts的地图下钻静态实现,中国下钻到各省、直辖市。(省级下钻到市级、县级貌似也类似吧)
- thinkphp框架下.查询数据库某表用户名字段是否唯一失效,解决方法
- 数据结构-图的基本概念
- server多路复用
- MVC,MVP,MVPVM(一)实践之路
- An simple introduction the components in Cloudera Bundle
- JAVA-IO-ByteArrayOutputStream