온라인 사용자를 기록하는 innoDB 테이블이 있습니다. 사용자가 페이지를 새로 고칠 때마다 업데이트되어 자신이있는 페이지와 사이트에 대한 마지막 액세스 날짜를 추적합니다. 그런 다음 이전 레코드를 삭제하기 위해 15 분마다 실행되는 크론이 있습니다. 잠금을 시도 할 때 'Deadlock이 발견되었습니다. 어젯밤 약 5 분 동안 트랜잭션을 다시 시작하십시오.이 테이블에 INSERT를 실행할 때 나타납니다. …
꽤 차이 이해가 안 Task.Wait와 await. ASP.NET WebAPI 서비스에 다음 기능과 비슷한 것이 있습니다. public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task<string> Bar() { return await Foo(); } public async static Task<string> Ros() { return await Bar(); …
POSIX를 사용하면 뮤텍스를 재귀 적으로 사용할 수 있습니다. 즉, 동일한 스레드가 동일한 뮤텍스를 두 번 잠글 수 있으며 교착 상태가 발생하지 않습니다. 물론 두 번 잠금을 해제해야합니다. 그렇지 않으면 다른 스레드가 뮤텍스를 얻을 수 없습니다. pthread를 지원하는 모든 시스템이 재귀 뮤텍스도 지원하지는 않지만 POSIX를 준수 하려면을 준수해야합니다 . 다른 API …
멀티 스레드 응용 프로그램을 작성할 때 가장 일반적인 문제 중 하나는 교착 상태입니다. 커뮤니티에 대한 나의 질문은 다음과 같습니다. 교착 상태 란 무엇입니까? 당신은 그들을 어떻게 감지합니까? 당신은 그들을 처리합니까? 그리고 마지막으로, 당신은 그것들이 발생하는 것을 어떻게 방지합니까?
다음 네 가지 테스트가 있으며 마지막 테스트는 실행할 때 중단됩니다. 왜 이런 일이 발생합니까? [Test] public void CheckOnceResultTest() { Assert.IsTrue(CheckStatus().Result); } [Test] public async void CheckOnceAwaitTest() { Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceAwaitTest() { Assert.IsTrue(await CheckStatus()); Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceResultTest() { Assert.IsTrue(CheckStatus().Result); // This …
다음 코드로 인해 .NET에서 C #을 사용하여 교착 상태가 발생합니까? class MyClass { private object lockObj = new object(); public void Foo() { lock(lockObj) { Bar(); } } public void Bar() { lock(lockObj) { // Do something } } }
완료하는 데 5 ~ 10 분 정도 걸리는 Select 프로세스가 있습니다. 현재 MS SQL 데이터베이스 엔진에 대한 힌트로 NOLOCK을 사용하지 않습니다. 동시에 동일한 데이터베이스 및 동일한 테이블에 업데이트 및 삽입을 수행하는 다른 프로세스가 있습니다. 첫 번째 프로세스가 시작되었으며 최근에 메시지와 함께 조기 종료됩니다. SQLEXCEPTION : 트랜잭션이 다른 프로세스와 함께 잠금 …
C #의 async/ await키워드를 사용하는 비동기 프로그래밍에 대한 몇 가지 모범 사례를 보았습니다 (C # 5.0을 처음 사용했습니다). 주어진 조언 중 하나는 다음과 같습니다. 안정성 : 동기화 컨텍스트 파악 ... 일부 동기화 컨텍스트는 재진입이 불가능하고 단일 스레드입니다. 이는 주어진 시간에 하나의 작업 단위 만 컨텍스트에서 실행될 수 있음을 의미합니다. 이에 …
스레딩에 C ++ 오류가 발생합니다. terminate called without an active exception Aborted 다음은 코드입니다. #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename TYPE> class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock<std::mutex> mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); stop_if_empty.notify_one(); …
스레딩 교착 상태를 초보자에게 설명하고 싶습니다. 나는 과거에 교착 상태에 대한 많은 예를 보았습니다. 일부는 코드를 사용하고 일부는 일러스트레이션을 사용했습니다 (유명한 4 대의 자동차 ). The Dining Philosophers 와 같이 쉽게 교착 상태가되는 고전적인 문제도 있지만 실제 초보자가 완전히 파악하기에는 너무 복잡 할 수 있습니다. 교착 상태를 설명하기 위해 가장 …
닷넷 3.5에서 / C # 응용 프로그램, 나는 캐치 싶습니다 SqlException하지만 이 교착 상태로 인한 경우에만 은 SQL Server 2008의 인스턴스. 일반적인 오류 메시지는 다음과 같습니다. Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 그러나이 …
닫힘 . 이 질문은 더 집중되어야 합니다. 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중하도록 질문을 업데이트하십시오 . 휴일 오년 전에 . 이 질문 개선 최근 인터뷰에서이 질문을 받았습니다. 인터리빙이 잘못되면 교착 상태가 발생한다고 대답했지만 면접관은 인터리빙에 관계없이 항상 교착 …
정적 이니셜 라이저에서 람다와 함께 병렬 스트림을 사용하는 데 CPU 사용률이없이 영원히 걸리는 이상한 상황을 발견했습니다. 코드는 다음과 같습니다. class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -> i).count(); System.out.println("done"); } public static void main(final String[] args) {} } 이것은이 동작에 대한 최소한의 재현 테스트 케이스 인 것으로 보입니다. 만약 내가: …
lockC # 과 동등한 것을 JavaScript에서 어떻게 구현할 수 있습니까? 그래서 제가 생각하는 간단한 사용 사례를 설명하려면 다음과 같습니다. 사용자가 버튼을 클릭합니다 B. Bonclick 이벤트를 발생시킵니다. 경우 B에 event-state이벤트 대기 위해 B에있을 ready-state전파하기 전에. 경우 B에 ready-state, B잠겨로 설정 event-state한 후, 이벤트 전파를. 이벤트 전파가 완료되면 B이로 설정됩니다 ready-state. 클래스를 …