본문 바로가기

concurrency4

[Rust] 공유 상태 동시성 예제 (Shared State Concurrency, 43일차) use std::sync::{Mutex, Arc}; use std::thread; fn main() { let counter = Arc::new(Mutex::new(0)); let mut handles = vec![]; for _ in 0..10 { let counter = Arc::clone(&counter); let handle = thread::spawn(move || { let mut num = counter.lock().unwrap(); *num += 1; }); handles.push(handle); } for handle in handles { handle.join().unwrap(); } println!("Result: {}", *counter.lock().unwrap()); } https.. 2023. 1. 26.
[Rust] Concurrency : Message Passing 예제 (42일차) use std::thread; use std::sync::mpsc; fn main() { let (tx, rx) = mpsc::channel(); thread::spawn(move || { let val = String::from("Hi"); tx.send(val).unwrap(); }); let received = rx.recv().unwrap(); println!("Got: {}", received); } use std::thread; use std::sync::mpsc; fn main() { let (tx, rx) = mpsc::channel(); thread::spawn(move || { let val = String::from("Greetings"); tx.send(val).unwrap(); p.. 2023. 1. 25.
[Rust] Concurrency : Thread 예제 (41일차) use std::thread; let handle = thread::spawn(|| { println!("Running in a new thread!"); }) use std::thread; fn main() { let v = vec![1, 2, 3]; let handle = thread::spawn(move || { println!("Here's a vector: {:?}", v); }); handle.join().unwrap(); } use std::thread; struct MyStruct { data: i32, } impl MyStruct { fn new(data: i32) -> MyStruct { MyStruct { data } } fn run(&self) { println!("Running i.. 2023. 1. 24.
[DB] Concurrency Problem (동시성 이슈) - 여러 user에 의해 변경 사항이 발생해도, data manager는 data의 integrity(완전성, 영향받지 않은 온전한 상태)를 보장해야 함. - Concurrency 는 application이 선언 혹은 만들어질 때만 가능하므로 global temporary table의 문제는 아님. - 가장 낮은 isolation level 0 에선 lock이 걸리지 않아 속도가 매우 빠름. && 동시 접근을 허용하기에 data 정합성에 문제 발생 가능. - 가장 높은 isolation level 3 에선 완전히 lock을 걸어 동시 접근 차단 및 순차 처리(Serializable). ==> 정합성은 완벽하지만 동시처리 양이 적어 속도가 매우 느림. - (사전 의미) 1개의 CPU Core에서 Time .. 2022. 10. 20.