[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: libssh multi-threading issue
[Thread Prev] | [Thread Next]
- Subject: Re: libssh multi-threading issue
- From: Dustin Oprea <myselfasunder@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 16 Apr 2014 14:43:48 -0400
- To: libssh <libssh@xxxxxxxxxx>
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 > > > > > > > > > > >
Re: libssh multi-threading issue | Anne Zhang <meantobe997@xxxxxxxxxxx> |
libssh multi-threading issue | ZhangAnne <meantobe997@xxxxxxxxxxx> |
Re: libssh multi-threading issue | Mike Jones <mrjones@xxxxxxxxxx> |
Re: libssh multi-threading issue | Anne Zhang <meantobe997@xxxxxxxxxxx> |
Re: libssh multi-threading issue | Aris Adamantiadis <aris@xxxxxxxxxxxx> |