[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: Anne Zhang <meantobe997@xxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 16 Apr 2014 18:58:36 -0700
- To: libssh@xxxxxxxxxx
Hi Aris, Thanks so much for the reply. It works in my Linux environment! I tried: static int initialized=0; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&mutex1); if (!initialized){ ssh_threads_set_callbacks(ssh_threads_get_pthread()); ssh_init(); initialized = 1; } pthread_mutex_unlock( &mutex1 ); So is there a similar mechanism in Windows? I noticed there is a libssh_threads.so in libssh for linux but not for window. What do I pass in ssh_threads_set_callbacks() for windows? Is there anything i should notice for the build of libssh under windows? On Wed, Apr 16, 2014 at 11:43 AM, Dustin Oprea <myselfasunder@xxxxxxxxx>wrote: > 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> |
Re: libssh multi-threading issue | Dustin Oprea <myselfasunder@xxxxxxxxx> |