Sam windows po sebi dozvoljava da se kontrole prave i u threadovim ali tada je taj thread vlasnik tog handla i u tom slucaju je sigurno da se ta kontrola koristi u tom thredu, ako se koristi iz vise threadova moze ali i ne mora doci do problema, to zavisi od nacina upotrebe. VCL je koncipiran tako da se ceo GUI nalazi u MainThreadu zato se za VCL kaze da nije threadsafe. Pristup sa synchronize je siguran ali je prilicno spor i neefikasan, ja u tu svrhu koristim poruke, npr. imam neki worker thread koji nesto radi i onda rezultate (ili progress) treba da prikaze korisniku, sve kontrole su uvek napravljene u glavnom threadu a pomocni thread samo salje poruke (sa PostMessage) koje onda glavni thread prihvata i prikazuje rezultate.
@tkaranovic
Primer koji si dao je delimicno threadsafe, naime jedan ShowMessage (koji je interno VCL forma) se nalazi van Synchronize i zato nije threadsafe, drugi ShowMessage je siguran jer je u okviru Synchronize. Sam primer po sebi ce skoro sigurno raditi bez problema jer je jednostavan pa ni prvi ShowMessage nece praviti probleme ali strogo gledano to nije dobar nacin programiranja. Ako je potrebno prikazati nesto korisniku onda treba koristiti WinAPI MessageBox funkciju koja je threadsafe.
Vecina baza dozvoljava multithread pristup, tako da je sasvim normalno i dozvoljeno da vise threadova istovremeno pristupa bazi, cita i pise podatke. Neke baze imaju i multithread podrsku za kverije sto znaci da komplikovne kverije one mogu podeliti na manje segmente od kojih ce se svaki izvrzavati na jednom coru procesora sto opet znaci da ce rezultati biti brzi. Ako nema podrsku onda to znaci da jedan kveri se izvrzava na jednom procesoru pa ce stoga biti i sporiji. Prednosti deljenja kverija su posebno evidentni na serverskim masinama sa velikim brojem jezgara. Firebird to nema pa je stoga sporiji od vecih baza za neke komplikovane stvari. Sto se tice Delphija, bazama se pristupa preko komponenti, neke komponente su threadsafe i tad mozes da radis sta hoces i odakle hoces. Vecina je threadsafe uz uslov da se svi resursi naprave i koriste u jednom threadu, dakle ako uspostavis posebnu konekciju ka bazi, transakciju, kveri u jednom thredu i sa njima radis samo iz tog threada si potpuno siguran. Da li radis to u threadu ili TTasku je pitanje afiniteta ali su oba slucaja sasvim OK i tu nema zastoja ili cekanja sto se tice same baze (ne racunam na cekanje baze za shared resurse tipa disk, memorija), ako se previse koristi Synchronize posebno ako u petlji kojom se obradjuju slogovi onda ce to naravno biti usko grlo, ali ako se to uradi lepo, prvo sve obradi pa salju podaci glavnom threadu onda tu nema nikakvih problema.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html