A small explanation on how to listen to game events. This example is made for CS:GO, but will work on other Source based games too (some event names may be different). The example is meant for class based plugins. So if you are creating static functions you'll have to do things a little bit different.
This example will show you how to create a worker thread that waits for jobs and working them one by one. We use maps to create a list where we add jobs too. This tutorial will process strings and create bcrypt hashes of it, for simulating purposes.
There is no native function for a unix timestamp in milliseconds, only 'time()' which returns seconds since epoch and 'microtime()', which returns microseconds since the current second. Although you can use 'microtime(true)', but it returns a float that can not guarantee precision. Or just 'microtime()' and explode the string.