2#ifndef KERNEL_UNIQUEPTR_H
3#define KERNEL_UNIQUEPTR_H
13#include <sys/socket.h>
29#define MAX_STRING_SIZE 100
31#define RETAIN_SHARED_PTR(ptr) retain_shared_ptr(ptr);
32#define RELEASE_SHARED_PTR(ptr) release_shared_ptr(ptr);
51 void (*deleter)(
void*);
60 void (*deleter)(
void*);
72 sp.
ptr = malloc(size);
75 sp.
mutex = (pthread_mutex_t*)malloc(
sizeof(pthread_mutex_t));
77 pthread_mutex_init(sp.
mutex, NULL);
91 up.
ptr = malloc(size);
102 pthread_mutex_lock(sp->
mutex);
104 pthread_mutex_unlock(sp->
mutex);
113 if (sp->
ptr == NULL) {
123 pthread_mutex_destroy(sp->
mutex);
161 printf(
"스레드에서 shared_ptr 사용 중 - ref_count: %d\n", *(sp->
ref_count));
177 printf(
"스레드에서 unique_ptr 사용 중\n");
void safe_kernel_printf(const char *format,...)
스레드 안전한 출력 함수 선언
SharedPtr create_shared_ptr(size_t size, void(*deleter)(void *))
shared_ptr 생성 함수
void default_deleter(void *ptr)
기본 소멸자 함수 (free 사용)
void release_unique_ptr(UniquePtr *up)
unique_ptr 메모리 해제
void * thread_function_unique(void *arg)
스레드 함수 (unique_ptr 사용)
void release_shared_ptr(SharedPtr *sp)
shared_ptr 참조 카운트 감소 및 메모리 해제
UniquePtr create_unique_ptr(size_t size, void(*deleter)(void *))
unique_ptr 생성 함수
UniquePtr transfer_unique_ptr(UniquePtr *up)
unique_ptr 소유권 이전
void retain_shared_ptr(SharedPtr *sp)
shared_ptr 참조 카운트 증가
void * thread_function_shared(void *arg)
스레드 함수 (shared_ptr 사용)
void(* deleter)(void *)
소멸자 함수
pthread_mutex_t * mutex
뮤텍스
void(* deleter)(void *)
소멸자 함수