create design dir to learning design mode

This commit is contained in:
hejun 2025-06-15 07:02:48 -04:00
parent 2c93f8bb73
commit b02e7e507e
4 changed files with 116 additions and 0 deletions

15
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**"
],
"defines": [],
"compilerPath": "/usr/bin/clang-18",
"intelliSenseMode": "linux-clang-x64"
}
],
"version": 4
}

55
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,55 @@
{
"files.associations": {
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"charconv": "cpp",
"compare": "cpp",
"concepts": "cpp",
"cstdint": "cpp",
"deque": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"numbers": "cpp",
"ostream": "cpp",
"span": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"typeinfo": "cpp",
"variant": "cpp",
"format": "cpp",
"text_encoding": "cpp"
}
}

27
src/design/single.c Normal file
View File

@ -0,0 +1,27 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdatomic.h>
struct Singleton
{
};
struct Singleton *getInstance()
{
static atomic_flag flag = ATOMIC_FLAG_INIT;
static struct Singleton *instance = NULL;
if (!instance)
{
if (atomic_flag_test_and_set(&flag) == 0)
{
instance = malloc(sizeof(struct Singleton));
}
while (!instance)
;
}
return instance;
}

19
src/design/single.cc Normal file
View File

@ -0,0 +1,19 @@
#include <mutex>
class Singleton
{
Singleton(const Singleton &) = delete;
Singleton &operator=(const Singleton &) = delete;
static Singleton &getInstnce()
{
static Singleton instance;
return instance;
}
private:
Singleton() {}
~Singleton() {}
};