Eine Proxy-Option gehört zu einem libcurl-Easy-Handle. Diese Option aus einem Thread zu ändern, während ein anderer Thread eine Übertragung über dasselbe Handle ausführt, verletzt die Besitzregeln des Handles.

libcurl ist threadsicher, wenn seine dokumentierten Regeln befolgt werden. Es synchronisiert nicht intern beliebigen gleichzeitigen Zugriff auf ein Handle. Geben Sie parallelen Workern eigene Handles, oder übertragen Sie den Besitz erst, wenn der vorherige Nutzer fertig ist.

Die Share-Schnittstelle hat eigene Sperranforderungen und Grenzen. Sie ist keine Erlaubnis, jede Einstellung eines gemeinsam genutzten Easy-Handles von jedem Worker aus zu ändern.

Ältere Proxy-Thread-Beispiele enthalten oft Sperr-Callbacks für alte TLS-Bibliotheksversionen. Prüfen Sie die aktuelle Dokumentation zur Thread-Sicherheit für das tatsächliche TLS-Backend und den Build. Das Kopieren historischer OpenSSL-Callbacks in eine aktuelle Anwendung ersetzt keinen korrekten Handle-Besitz.

Initialisieren Sie den globalen Bibliothekszustand gemäß den dokumentierten Startanforderungen, bevor Sie ihn parallel nutzen. Für öffentliche Anfragen, die über öffentliche Vermittler zulässig sind, bietet die kostenlose Proxy-Liste Kandidaten für die Proxy-Option jedes Workers; stimmen Sie das Protokoll auf den libcurl-Build ab. Behalten Sie für jeden fehlgeschlagenen Vorgang den konfigurierten Proxy des Handles und sein eigenes Fehlerergebnis. Eine globale Variable “aktueller Proxy” ist eine schlechte Kennung, wenn mehrere Übertragungen laufen.

Ähnliche Artikel