folly::Synchronized — lock wrapper 패턴
folly::Synchronized<T> — 데이터와 lock을 한 객체에 묶어 잠금 누락을 컴파일 타임에 막는다.
89개의 포스트 · 3/4 페이지
folly::Synchronized<T> — 데이터와 lock을 한 객체에 묶어 잠금 누락을 컴파일 타임에 막는다.
EvictingCacheMap — 고정 size 한도와 LRU eviction policy를 결합한 single-thread cache.
ConcurrentHashMap — sharded buckets + Hazard Pointer로 erase 포함 full thread-safe hash map.
AtomicHashMap — lock-free read, append-only insert, 큰 read-heavy 워크로드용 hash map.
FixedString — fixed capacity, fully constexpr 문자열 type. compile-time concat과 hash가 가능.
small_vector — N개까지 inline 저장, overflow는 heap, std::vector 호환 인터페이스.
F14 chunk 구조와 SIMD probing — SSE2/AVX/NEON dispatch, H1/H2 hash split, 14-slot 선택 이유.
F14FastMap — key/value 크기로 ValueMap과 VectorMap 중 자동 선택, 사용자 trade-off 제거.
F14VectorMap — value를 contiguous vector에 두고 chunk에는 index만, 순회 cache-friendly.
F14NodeMap — value를 별도 heap node에 두어 pointer/reference 안정성을 보장하는 F14 변형.
F14ValueMap의 in-place value 저장과 std::unordered_map node-based의 차이, 성능과 reference 안정성.
folly::to의 성능 — lookup table itoa, SWAR atoi, sprintf/iostream과의 5-10배 차이.
folly::to에 사용자 타입을 hook하기 — parseTo, toAppend ADL 확장.
folly::to의 throw-on-error 변환, tryTo의 Expected 반환, 양방향 string/number 처리.
folly::join과 folly::split의 구현, StringPiece 기반 zero-copy split, absl::StrSplit 비교.
StringPiece의 역사적 배경, std::string_view와의 호환 layer, Range<const char*>로서의 일반화.
Folly가 fmt 라이브러리를 채택한 이유, formatter customization, sformat/format 차이.
FBString의 23-byte SSO와 Copy-on-Write, jemalloc 친화 레이아웃 — std::string 대체로서의 설계 결정.
IOBuf의 ref-count는 buffer share를 표현한다. clone/unshare/takeOwnership의 의미를 정확히 이해해야 zero-copy가 안전하다.
IOBuf chain을 직접 writev/readv에 넘기고, splice/sendfile과 결합해 zero-copy 송수신 파이프라인을 구성한다.
Cursor는 IOBuf chain을 단일 stream처럼 읽고 쓰는 추상화. endian-safe primitive read와 chain 자동 순회를 제공한다.
IOBufQueue는 IOBuf chain의 append/prepend/split을 효율적으로 관리한다. streaming codec과 framing layer의 표준 도구다.
IOBuf는 ref-counted byte buffer chain. network 코드의 zero-copy 패턴을 표현하는 Folly의 핵심 자료구조다.
EventBase는 libevent의 event_base를 wrap한 단일 thread event loop. file descriptor, timer, cross-thread message를 한 번에 처리한다.