zxh1986123 / pevents Goto Github PK
View Code? Open in Web Editor NEWThis project forked from neosmart/pevents
Implementation of Win32 events for *nix platforms, built on top of pthreads.
License: MIT License
This project forked from neosmart/pevents
Implementation of Win32 events for *nix platforms, built on top of pthreads.
License: MIT License
pevents is a cross-platform C++ library meant to provide an implementation of the WIN32 events for POSIX systems. pevents is built on pthreads and provides *most* of the functionality of both manual- and auto-reset events on Windows, most-notably including simultaneous waits on multiple events (ร la WaitForMultipleObjects). pevents is also free of spurious wakeups - returns from waits are guaranteed correct. pevents also doubles as a thin, sane wrapper for CreateEvent() & co. on Windows, meaning you can use pevents directly in your cross-platform code without #ifdefs for Windows/pthreads. pevents is developed and maintained by Mahmoud Al-Qudsi <[email protected]> of NeoSmart Technologies <http://neosmart.net/> While POSIX condition variables (pthread_cond_t) and WIN32 events both provide the essential building blocks of the synchronization primitives required to write multithreaded code with signaling, the nature of the differences between the two have lent their way towards creating different synchronization and multithreaded-programming paradigms. Developers accustomed to WIN32 events might have a hard time transitioning to condition variables; pevents aims to ease the transition for Windows developers looking to write multithreaded code on *nix by providing a familiar synchronization primitive that will allow them to duplicate the essential features of WIN32 auto/manual-reset events. As mentioned earlier, pevents provides most of the functionality of WIN32 events. The only features not included are only named events and support for security attributes. Usage: pevents comes with two APIs: one along the lines of WIN32 functions and the other for those more comfortable with pthread functions. They are identical underneath the hood. WIN32-style pevents API: neosmart_event_t CreateEvent(bool manualReset, bool initialState); int DestroyEvent(neosmart_event_t event); int WaitForEvent(neosmart_event_t event, uint64_t milliseconds); int WaitForMultipleEvents(neosmart_event_t *events, int count, bool waitAll, uint64_t milliseconds); int WaitForMultipleEvents(neosmart_event_t *events, int count, bool waitAll, uint64_t milliseconds, int &index); int SetEvent(neosmart_event_t event); int ResetEvent(neosmart_event_t event); int PulseEvent(neosmart_event_t event); All the code is contained within pevents.cpp and pevents.h. You should include these two files in your project as needed. All functions are in the neosmart namespace. (Windows users should use win32.cpp instead of pevents.cpp) Compilation options: The following preprocessor definitions may be defined (-DOPTION) at compile time to enable different features. WFMO: Enables WFMO support in pevents. It is recommended to only compile with WFMO support if you are taking advantage of the WaitForMultipleEvents function, as it adds a (small) overhead to all event objects. PULSE: Enables the PulseEvent function. PulseEvent() on Windows is fundamentally broken and should not be relied upon โ it will almost never do what you think you're doing when you call it. pevents includes this function only to make porting existing (flawed) code from WIN32 to *nix platforms easier, and this function is not compiled into pevents by default.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.