2014-10-17 3 views
1

난 할 일이 무거운 CPU/RAM 물건을 할 일이있다. 그 결과로 일부 데이터베이스 요청을 수행해야합니다. 이 모든 작업을 수천 번해야하므로 백그라운드 스레드에서 수행하고 있습니다. 이제 각 작업을 두 부분으로 나눠서 두 개의 개별 스레드로 분할하여 첫 번째 스레드가 데이터베이스 요청이 완료 될 때까지 기다릴 필요가 없도록 고려하고 있습니다. 그런 다음 두 번째 스레드가 첫 번째 라운드의 데이터베이스 요청을 기다리는 동안 두 번째 라운드의 CPU/RAM 작업을 수행 할 수 있으며 모든 작업이 빨라질 것입니다.스레드 내부에서 TThread-descendent를 인스턴스화하는 것이 안전합니까?

자, 두 번째 TThread 자손을 첫 번째 인스턴스에서 인스턴스화하는 것이 안전합니까? 또는 MainThread 내에서 TThread 자손을 인스턴스화해야합니까? 두 가지 모두 할 수는 있지만 첫 번째에서 두 번째 인스턴스를 만드는 것이 내 경우에 더 쉬울 것이며 두 번째 스레드가 프로그램의 나머지 부분에 투명하게 나타나므로 우동 패러다임을 따르게 될 것입니다.

+5

완벽하게 안전합니다. – TLama

+0

나는 그것이 왜 문제가되는지 알지 못한다. – mg30rg

+1

난 그냥 VCL 물건 스레드 안전하다고 가정하고, TThread 너무 복잡한 자신의 스레드 안전을 검사하는 게으른했다. 또한, TThread의 단순한 복잡성으로 인해 오류가 발생하기 쉬웠을 것입니다. – RSE

답변

4

나는 프로덕션 코드에서 많은 시간을 보냈지 만 결코 진짜 문제는 아니었다. 나는 그것이 완벽하게 안전하다고 말할 수있다.