.Net 구현 - System.Data.SQLite에 대해 묻고 있습니다. 스레드 안전 모드로 사용하기위한 지침이 있습니까?SQLite.Net은 스레드로부터 안전한가요?
나는 SQLite 자체가 with or without thread safety으로 컴파일 될 수 있음을 알고 있지만 System.Data.SQLite는 어떻게 컴파일 되었습니까?
.Net 구현 - System.Data.SQLite에 대해 묻고 있습니다. 스레드 안전 모드로 사용하기위한 지침이 있습니까?SQLite.Net은 스레드로부터 안전한가요?
나는 SQLite 자체가 with or without thread safety으로 컴파일 될 수 있음을 알고 있지만 System.Data.SQLite는 어떻게 컴파일 되었습니까?
스레드로부터 안전하지 않으므로 스레드간에 연결 개체 또는 유사 항목을 공유 할 수 없습니다.
readme 파일에 언급 된 스레드 버그 수정은 동일한 파일에 대해 여러 개의 연결 (즉, 각각 하나씩)을 사용하는 여러 스레드와 어떤 문제가 발생할지 경쟁 조건이 발생할 수 있는지와 관련이 있습니다.
예를 들어, BEGIN 및 BEGIN IMMEDIATE에 대해 언급 한 스레드 경쟁 조건은 스레드가 BEGIN을 발행 했더라도 나중에 BEGIN을 발행 한 다른 스레드가 첫 번째 스레드가 수행되기 전에 데이터베이스 소유를 끝낼 수 있다는 불행한 결과를 초래했습니다. 이러한 유형의 상황이 수정되었습니다.
그러나 .NET의 데이터베이스 연결 (oracle, sqlite, msql 서버)은 스레드로부터 안전하지 않으며 주변 개체도 아닙니다.
위의 내용을 약간만 추가하면 ADO.NET 사양은 스레드 안전성을 권장하지 않습니다. 스레드 당 하나의 연결을 사용한다고 가정합니다. 이것은 ADO.NET의 디자인입니다. –
독서는 어떨까요? 스레드간에 읽기 전용 연결을 공유하는 것이 안전합니까? – axe