George Stephanos <gaf.stephanos@gmail.com> writes:You already have a lock on the whole table anyway.
> You need some sort of free list instead of a linear search.
>
> Alright.
>
> Also you can probably avoid one level of pointers and store
> objects directly.
>
>
> I thought about this. If I store objects directly, accessing any would
> require a lock on the whole table so I guarantee it's not moved or
> reallocated elsewhere. This would obviously be pretty slow.
Yes, that's the problem. The structs have to be protected too.
> Returning a pointer to the object outside of the critical section
> is not
> a good idea.
>
> The critical section just protects the table and not the
> handles/structs themselves.
--
Alexandre Julliard
julliard@winehq.org