oops, that was wrong :(
here is the possible solution:
static void delete_threadinfo(void)
{
struct threadinfo *threadinfo;
threadinfo = getthreadinfo();
list_destroy(threadinfo->joiners, NULL);
close(threadinfo->wakefd_recv);
close(threadinfo->wakefd_send);
THREAD(threadinfo->number) = NULL;
active_threads--;
if (threadinfo->number < next_threadnumber)
next_threadnumber = threadinfo->number;
gw_assert(threadinfo != &mainthread);
gw_free(threadinfo);
}
next_threadnumber is always the min. free slot number.
worst case while creating new thread:
next_threadnumber is used then max MAX_THREATABLE_SIZE-next_threadnumber
loop.
Am Donnerstag, 19. Juni 2003 18:52 schrieb Alexander Malysh:
> Hi,
>
> Am Donnerstag, 19. Juni 2003 18:36 schrieb Stipe Tolj:
> > Michael Mulcahy schrieb:
> > > Hi All,
> > >
> > > Found a solution that I think should be ok.
> > >
> > > In the gwthread-module the table is size 1024.
> > > While the thread number may increase byond it the
> > > id is a modulo of 1024 and so the modulo can be
> > > used in the log.c to prevent the prior mentioned
> > > problem.
> > >
> > > suggested fix would be to use following:
> > >
> > > if ((e = thread_to[(gwthread_self()%1024)])) {
> > >
> > > Have tested this and appears to work.
> >
> > how about having this inside gwthread-pthread.c as function:
> >
> > /* Return the threadtable sloot this thread is using. */
> > long gwthread_table_slot(void)
> > {
> > return (gwthread_self() % THREADTABLE_SIZE);
> > }
> >
> > and use this call instead of gwthread_self() for the logging
> > functions?!
>
> how about just reusing of freed thread number for next tread ?
>
> static void delete_threadinfo(void)
> {
> struct threadinfo *threadinfo;
>
> threadinfo = getthreadinfo();
> list_destroy(threadinfo->joiners, NULL);
> close(threadinfo->wakefd_recv);
> close(threadinfo->wakefd_send);
> THREAD(threadinfo->number) = NULL;
> active_threads--;
> next_threadnumber = threadinfo->number; /* reuse tread numer */
> gw_assert(threadinfo != &mainthread);
> gw_free(threadinfo);
> }
>
> > Stipe
> >
> > [EMAIL PROTECTED]
> > -------------------------------------------------------------------
> > Wapme Systems AG
> >
> > Vogelsanger Weg 80
> > 40470 D�sseldorf
> >
> > Tel: +49-211-74845-0
> > Fax: +49-211-74845-299
> >
> > E-Mail: [EMAIL PROTECTED]
> > Internet: http://www.wapme-systems.de
> > -------------------------------------------------------------------
> > wapme.net - wherever you are
--
Best regards / Mit besten Gr��en aus K�ln
Dipl.-Ing.
Alexander Malysh
___________________________________
Centrium GmbH
Ehrenstrasse 2
50672 K�ln
Fon: +49 (0221) 277 49 240
Fax: +49 (0221) 277 49 109
email: a.malysh at centrium.de
web: http://www.centrium.de
msn: olek2002 at hotmail.com
___________________________________________
Please avoid sending me Word or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html