Я пытаюсь запустить заданное количество завитков от каждого потока. pull_one_url()
- это функция, которая вызывается в pthread_create()
из main()
. cnt_limit
- это глобальная переменная, которая установлена в main и доступна только для чтения в потоках.
Неожиданное поведение, которое я иногда наблюдаю, заключается в том, что локальная переменная count увеличивается до высоких значений.
Для заданного числа прогонов было 10 и cnt_limit
(количество скручиваний из каждого потока ) установлен на 10.
Выполнение командной строки: ./a.out 10 10 10.140.71.12
Неожиданный вывод:
10 2682
10 2858
10 2804
10 2988
10 2871
10 2940
10 2864
10 2609
10 2816
10 2893
ожидаемый вывод: для заданного ввода необходимо выполнить каждые 10 потоков 10 запросов скручивания.
количество строк = количество потоков
первое число в каждой строке = количество запросов скручивания, которые требуется выполнить каждому потоку.
второе число в каждой строке = количество запросов curl, выполненных каждым потоком
Отредактировано: после комментирования кода libcurl, присутствующего внутри l oop, я пока не наблюдаю такого поведения. Но ранее наблюдаемое неожиданное поведение также было не очень последовательным. Остается вопрос, как этот код libcurl влияет на простой счетчик в l oop.
Потратив много времени, пытаясь понять это, я публикую это здесь. Я думаю, что я делаю какую-то глупую ошибку. Любая помощь будет оценена.