Korzystał ktoś z samby(libsmbclient) z wielu wątków?

Chciałem w każdym uruchomionym wątku, stworzyć sobie klienta łączącego się z serwerem, przesyłającego jakieś kilku megabajtowe pliki a na końcu zamykający połączenie.

Jednak zauważyłem że wywoływanie smbc_new_context z wielu wątków jednocześnie, powoduje problemy z pamięcią i wysypywanie się programu a nie znalazłem innej metody na łączenie się z serwerem i przesyłanie danych.

Próbowałem grzebać w bindingach które używamy, ale nie udało mi się nic zdziałać - issue https://github.com/veeso/pavao/issues/17

Obecnie w programie dodaję globalnego locka na operacje i tylko jedna na raz może się wykonywać.

Czy samba jest ograniczona do działania tylko w jednym watku w programie, czy może to błąd nakładki której używam, czy może istnieje jakaś opcja do uruchomienia wsparcia wielu wątków?

#samba
#jezykc
#programowanie
globalbus

@qarmin samba zawsze mi się kojarzyła z jednym wielkim nieporozumieniem.

Btw, a cifs-utils?

qarmin

@globalbus Chyba nawet w jednym miejscu z tego korzystamy do przesyłania dużych plików, jednak wywoływane jest to jako zewnętrzny program i wymaga roota(w sensie trudniej to testować lokalnie).

koszotorobur

@qarmin - ale do przesyłania plików weź ty użyj czegoś normalnego jak scp, rsync, robocopy, gołe SSH, sftp a nawet ftp(s).

qarmin

@koszotorobur Sprzęt ma być dostępny u klientów, więc raczej wszystko z powyższych odpada, bo wymaga bardziej skomplikowanych operacji.

Z sambą jest o tyle dobrze, że niemal każdy z poziomu windowsa, prosto sobie to może postawić(być może w przyszłości jakieś inne metody będą dodane, ale samba to must have).

m_h

@qarmin a myślaleś o instalacji z powershella:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


?

qarmin

@m_h Cóż, z przyzwyczajenia nie napisałem że korzystam z Linuxa, więc to nie jest dostępne tutaj.

koszotorobur

@qarmin - no to nie zazdroszczę Ci jako użytkownikowi Linuksa przymusu wspierania tego Windowsowego gówna

Znalazłem libsmb2, która wspiera async - może to Ci zadziała

qarmin

@koszotorobur Dzięki, może to zadziała.


Mimo wszystko wydaje mi się, że i tak sambie daleko do np. Dicom w rankingu najbardziej problematycznych api/bibliotek/usług.

qarmin

@m_h Samo polecenie `Add-WindowsCapability` i strona `Get started with OpenSSH for Windows` jasno sugeruje że jest to feature tylko dla Windowsa.


Jak budujemy obraz systemu, to raczej nie możemy się opierać na operacjach, które by dokończyć instalację wymagają uruchomienia n razy systemu, a raczej tak właśnie jest z powyższym poleceniem

Zaloguj się aby komentować