Malcom Haak schrieb:
Correct me if I'm wrong, But can't you technically make any code 'thread-safe' by using Critical Sections before doing work. In some code I have seen before a critical section was entered before calling TList.Add

IMO this won't help, because any other thread that does *not* use the critical section still can trash the list.

It might help when TList.Add would use a critical section internally, but then *all* lists are blocked at once, unless a critical section is connected to *every* single TList instance - what may run into out-of-resources. Otherwise a global TList.Add lock may lock up an entire application, when an OnAdd handler tries to use another (temporary...) TList.

IMO. I may be wrong here, because I used threads only on realtime systems, never in Delphi or Lazarus...


BTW, I just got my copy of RAD Studio XE, where e.g. thread.suspend is deprecated, and other means for thread synchronization are added. But these have to be implemented in FPC first, before SpinLock or other procedures or methods can be used.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to