비사 스레드 안전 PHP가있는 NGINX ... 지속될 때 경주 조건을 가정하지 않아도됩니까?

StackOverflow https://stackoverflow.com/questions/9474630

문제

나는 Nginx가 프로세스 구동에 반대하는 이벤트로 이벤트가되는 것을 오해 할 수 있습니다 (따라서 Apache와 같은 모든 스레드에서 mod_php가 없으므로).모든 PHP 실행이 동기화 될 모든 NGINX 작업자 스레드에 대해 실행중인 PHP-CGI의 경우 1 인 경우가 있기 때문에 그렇게합니다.이를 위해 데이터베이스의 객체에 액세스 할 때 데이터를 저장할 때 레이스 조건에 대해 걱정할 필요가 없습니다.

정확한 사고를 가지고 있거나 완전히 기반을 끼치 지 않으면 확실하지 않습니다.

감사합니다.나는 웹 프로그래밍 / 데이터베이스 / 웹 서버의 새로운 기능

도움이 되었습니까?

해결책

"이벤트 구동"은 응용 프로그램이 "이벤트가 다음에 일어나는 일을 기다리고 있습니다. 전형적인 이벤트는 다양한 형태의 마우스 또는 키보드 활동입니다. 대조적으로 "프로세스 구동"(종종 "절차 프로그래밍")은 단순히 사물에 대한 프로그램 "을보고"라는 프로그램이 있음을 의미합니다.

둘 다 동시에 코드를 열 수 있지만 그렇게하는 것은 "고급 운동"이거나 적어도 일부는 그렇게 생각합니다.

이제, 인종 조건의 큰 문제는 얽히게 일어날 일이 일어날 일에 대한 문제에 관한 것입니다. 데이터베이스를 사용하면 완벽한 예제가 있습니다. 전역 바로의 리턴 오류 상태를 코딩하고 코드의 활동 간의 임시 중복이있는 경우 (종종 "이벤트 기반"환경에서 종종 발생하지만 순수 절차 적 프로그래밍에서도 발생할 수 있습니다) 잘못된 오류 메시지를 가져올 수 있습니다. 무언가가 일어난 스레드가 오류가 있고 더 빠른 스레드가 오류가 없었지만 빠른 스레드가 나중에 나온 것이 아니라 성공으로 상태를 설정하는 경우 상상해보십시오. "스레드 안전"프로그래밍이 피할 수있는 조건이 있습니다. 이것은 "경쟁 조건"의 한 예입니다.

각 스레드의 행동이 독립적으로 인종 조건이 없으므로 모든 것이 응용 프로그램의 논리와 그 필요에 따라 다릅니다. 그리고 아무도 그들이 무엇을 할 수 있는지, 개발자 만 알려줄 수 없습니다! ... 이거 항공사 예약 시스템입니까? ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top