Skip to content

Instantly share code, notes, and snippets.

View jeremyong's full-sized avatar
⌨️

Jeremy Ong jeremyong

⌨️
View GitHub Profile
@jeremyong
jeremyong / is_it_safe.cpp
Last active May 21, 2021 20:23
Crowdsourcing review of lock free initialization/deinitialization routine
// Suppose we have two functions load() and unload() that take a finite amount of time to complete and are not threadsafe.
// They also cannot run at the same time. It is invalid to call load before a pending unload is finished, and it is invalid
// to call unload before a previous call to load has finished. Basically, we are either in a "fully loaded" state, or a
// "fully unloaded" state.
void load();
void unload();
// Furthermore, suppose we have two functions, start() and finish(). The first time we call start, load must
// run to completion before entering the body of start(). After the final call to finish, unload should be called unless
// The MIT License
// Copyright 2022 Jeremy Ong
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE S
@jeremyong
jeremyong / Function.hpp
Created December 15, 2023 16:50
std::function replacement using inlined storage
#pragma once
#include <concepts>
#include <core/Utility.hpp>
#include <new>
#include <string.h>
// A movable function adapted from LLVM's unique function. Assumes
// relocatability.
template <typename F>
The JeremyTeX Confluence plugin does not store, submit, or retain any data in any way. All rendering is done client-side and internet communication exists strictly between the browser and Confluence.
@jeremyong
jeremyong / JeremyTeX Terms of Use.txt
Created March 23, 2024 21:52
JeremyTeX Terms of Use
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.