[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libssh multi-threading issue


On Wed, Apr 16, 2014 at 2:26 PM, Aris Adamantiadis <aris@xxxxxxxxxxxx>wrote:

> Hi Anne,
>
> There's an easy solution: before every ssh_connect, put an
> initialization procedure protected by a mutex. This is not optimal
> (because every new connection will have to lock+unlock a mutex) but you
> are guaranteed that ssh_init gets called only once.
>

I like it. That's a cute solution for her requirements, Aris.



Dustin


> Pseudocode:
>
> do_my_connect(){
> static int initialized=0;
> static mutex init_mutex;
>
> mutex_lock(&init_mutex);
> if (!initialized){
>   initialize_threading();
>   initialized = 1;
> }
> mutex_unlock(&init_mutex);
>
>
> Regards,
>
> Aris
>
> Le 16/04/14 17:53, Anne Zhang a écrit :
> > Hi Mike,
> >
> > Thanks for the reply. Unfortunately, I am only implementing an .so
> > file and have no access to the main program. I understand ssh_init()
> > would solve the problem but my library is being called within a thread
> > and I cannot change what's in the main/original thread.
> >
> > Look forward to additional input.
> >
> > Thanks,
> >
> > Anne
> >
> >
> > On Wed, Apr 16, 2014 at 2:53 AM, Mike Jones <mrjones@xxxxxxxxxx
> > <mailto:mrjones@xxxxxxxxxx>> wrote:
> >
> >     On 4/16/2014 1:51 AM, ZhangAnne wrote:
> >>     Hi,
> >>
> >>     I am implementing a shared library, and met the threading issue
> >>     when the program calls my library and executes multiple threads
> >>     in parallel. Since my lib is being called by other program, I
> >>     cannot initialize the threading outside of any threading context
> >>     as mentioned
> >>     here: http://api.libssh.org/master/libssh_tutor_threads.html
> >>
> >>     My control to the code is limited within the scope of my library.
> >>     I am wondering if there is any workaround other than changing
> >>     code ouside my library?
> >>
> >>     Thanks,
> >>
> >>     Anne
> >
> >     If it helps, I used libssh in a multi-threaded application without
> >     calling ssh_threads_set_callbacks() or linking libssh_threads.
> >     In fact, I never even read this part of the libssh documentation
> >     before today. :)
> >
> >     The main/original thread of the application calls ssh_init() and
> >     then spawns off one additional thread that makes all the other
> >     libssh calls.
> >     The freeing of resources and ssh_finalize() are done back in the
> >     original thread after this other thread has finished.
> >
> >     So far there have been no issues that I can attribute to using it
> >     this way.
> >
> >     We're running on Linux (RedHat 6.x) and using libpthread.
> >
> >     - Mike
> >
> >
> >
> >
>
>
>

Follow-Ups:
Re: libssh multi-threading issueAnne Zhang <meantobe997@xxxxxxxxxxx>
References:
libssh multi-threading issueZhangAnne <meantobe997@xxxxxxxxxxx>
Re: libssh multi-threading issueMike Jones <mrjones@xxxxxxxxxx>
Re: libssh multi-threading issueAnne Zhang <meantobe997@xxxxxxxxxxx>
Re: libssh multi-threading issueAris Adamantiadis <aris@xxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org