On Fri, Oct 15, 2010 at 5:20 AM, Frank Church <vfcli...@gmail.com> wrote: > > I am writing an app involving 2 threads, and a timer loop in the UI. > > The first thread monitors network events, logs them into a database, appends > them to a list. >
Any time I see append to a list I always think "RTLCriticalSection" > The second thread monitors the list, checks the events and updates a data > structure, which is used by a timer loop in the main application to update > the UI. > > What are the issues involved in making sure that the 2 threads don't > conflicted over access to the list? > This is my first foray into using threads that share memory structures. > You have to protect the list from access by other threads. CritcialSection is the only way InitCriticalSection - Creates it DoneCriticalSection - Frees it EnterCriticalSection - Locks list DoneCritiicalSection - Unlocks list Example EnterCriticalSection(FLock); Try FList.Add(EntryP); Finally LeaveCriticalSection(FLock); end; Polling where the list size is highly dynamic you will need protect it. I think FPC has thread safe list objects too. See the FPC rtl.pdf documentation on TThreadList 2.63.1 TThreadList Description TThreadList is a thread-safe Tlist (307) implementation. Unlike TList, it can be accessed read- write by multiple threads: the list implementation will take care of locking the list when adding or removing items from the list. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal