LINUX.ORG.RU
ФорумTalks

Нафига? А главное зачем?

 , , , ,


0

3

Случайно наткнулся на этот сюр

https://learnc.info/c/pthreads_semaphores.html

учимся пользоваться pthreads
#include <Windows.h>

отдельно триггернулся с регистра инклудов

★★★★★

Последнее исправление: mittorn (всего исправлений: 2)

В том дебилопримере и семафор не нужен. Они применяются к каким-то сложным операциям, а не инкременту. Для него достаточно std::atomic

rtxtxtrx ★★
()
Ответ на: комментарий от u5er

мьютексы вообще не нужны. нужны две очереди in_q и out_q, последнюю отдельный поток обрабатывает и срет в stdout… да и c++ не нужен

rtxtxtrx ★★
()

Но в итоговом-то листинге кросплатформенностьЪ

#ifdef _WIN32
    #include <conio.h>
    #include <Windows.h>
    #define Sleep(x) Sleep(x)
    #define wait() _getch()
#else
    #include <unistd.h>
    #define Sleep(x) sleep(x)
    #define wait() scanf("1")
#endif
apt_install_lrzsz ★★★
()
Ответ на: комментарий от lenin386

для меня это одно и тоже. я за c++. он моднее и в нем std::atomic и std::queue есть. не понимаю зачем страдать. эта боязнь ооп доведет до дурки

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от apt_install_lrzsz

кроссплатформенный это когда на _WIN32 используется win32 код, а не тормозной winpthread

mittorn ★★★★★
() автор топика

#include <Windows.h>

скорее всего из-за Sleep

отдельно триггернулся с регистра инклудов

Напиши свою статью и успокойся. Это интернет, спорить с кем-то бессмысленно.

aiqu6Ait ★★★★
()
Ответ на: комментарий от rtxtxtrx

И в C его тоже можно использовать, но это не так удобно как в сипупу

Инкапсуляция - ладно, допустим, static спасает. Полиморфизм и наследование - увы, только с риском отстрела обоих ног. Вот уж действительно «нафига».

aiqu6Ait ★★★★
()
Ответ на: комментарий от aiqu6Ait

В какой-то древней книге по алгоритмам была целая глава про реализацию ООП на C. Для общего развития оно может и «полезно», но для вбросов в тредах может пригодиться.

Как пример:

Но опять же это упоротые по C фрики, которые считают C++ ненужным. Бывают еще любители C99, которые не признают все после него

rtxtxtrx ★★
()

Он прямо перед этим фрагментом кода пишет:

Обратимся опять к старому примеру.

Искать, где он там его до этого юзал, и нужен ли там ему был Windows.h для чего-то, я, конечно, не буду, но всё же это именно копипаста, и очевидно, что оно тут не для объяснения основной темы, а из старого примера.

В конце статьи у него это засунуто в #ifdef _WIN32.

Так что по итогу у меня два вопроса:

  1. От чего тут так триггериться с учётом выше написанного?
  2. Зачем ты принёс это на ЛОР? Даже если бы там была глупость без этих оговорок — мало ли глупостей в интернетах пишут. Да и Линукс тут ни при чём.
CrX ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Бывают любители msvc6, которые не признают всё, что ей не компилируется. Но их можно понять, то что ей скомпилировано будет работать на всех дектопных windows и не требует тащить libc с собой как зависимость, msvcrt гарантированно будет, чего не скажешь об ucrt, который требует обновления системы и админские права для установки там, где его нет

mittorn ★★★★★
() автор топика
Ответ на: комментарий от CrX

Я принёс глупость, которую счёл забавной в толксы. К слову говороя, тема весьма техническая, но всё же больше для толксов.
А Windows.h триггерит т.к виндузятники не могут в регистр имён файлов

mittorn ★★★★★
() автор топика
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

А Windows.h триггерит т.к виндузятники не могут в регистр имён файлов

Не только виндузятники, но ещё и финны из Symbian/Nokia.

Вся ФС внутри Symbian/Nokia девайсов из-за регистронезависимости была сущей помойкой. А сам Symbian в наглую копировал технологии из WinAPI, вроде GDI или даже расширения исполняемых файлов – EXE, DLL…

Как же хорошо, что оно подохло в канаве обоссавшись и обосравшись.

EXL ★★★★★
()
Ответ на: комментарий от mittorn

Бывают любители msvc6, которые не признают всё, что ей не компилируется. Но их можно понять, то что ей скомпилировано будет работать на всех дектопных windows

Зуб даете что прям на всех? И на 95 и на 3.1 и на nt 3.51...

anc ★★★★★
()
Ответ на: комментарий от Shadow

Ну так-то в win32 были threads когда ещё linux не было.

Вроде win32 появилось позже чем появился linux. Ну а занос threads в онтопик ЕМНИП уже получился постфактум, оно не особо и нужно, но занесли.

anc ★★★★★
()
Ответ на: комментарий от mittorn

Проверил установленный MSVC какой-то там версии под Wine через этот набор скриптов:

$ find -iname "Windows.h"
./dest/kits/10/Include/10.0.22000.0/um/Windows.h
./dest/kits/10/Include/10.0.22621.0/um/windows.h
./dest/kits/10/Include/10.0.22621.0/um/Windows.h

windows.h это автоматически созданный симлинк на Windows.h, может писать с заглавной буквы чуть более верно. Правда, есть у меня подозрение, что в каких-нибудь более старых MSVC можно найти и WINDOWS.H. Поэтому в контексте регистронезависимой ФС это вообще не играет никакой роли.

a1ba ★★
()
Ответ на: комментарий от rtxtxtrx

Да видел я несколько таких примеров, там void* на void** и void(*) погоняет. И даже результаты попыток применения в продакшене видел, слава Кернигану мы их из кода вычистили.

aiqu6Ait ★★★★
()
Ответ на: комментарий от EXL

вроде GDI

Что плохого в GDI?

даже расширения исполняемых файлов – EXE, DLL

Если это PE32 - то так и должно быть. А PE32 - не самый плохой вариант исполняемых файлов

Как же хорошо, что оно подохло в канаве обоссавшись и обосравшись.

Назови хотя бы одну вещь из тех, что мы получили взамен, которая была бы не сильно хуже

mittorn ★★★★★
() автор топика
Ответ на: комментарий от anc

Нет. на 95 придётся рантайм ставить, на win32s может не быть многих API и официально нужен msvc4.1

mittorn ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Так я именно на это и намекнул. И ещё я забыл упомянуть всякие CE и другие embedded варианты оффтопика. Их же тоже можно в некотором роде назвать десктопными :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

нет, это не десктопные, как и NT. Но я и так знал, что win32s оно не поддерживает, но кто сейчас будет его таргетировать?

mittorn ★★★★★
() автор топика
Ответ на: комментарий от mittorn

нет, это не десктопные, как и NT

У NT небыло десктопного варианта в одной линейке наряду с серверным? Пруфы в студию плиз. Я реально могу ошибаться, но вроде такого не припоминаю.

anc ★★★★★
()
Ответ на: комментарий от anc

В онтопик сначала занесли user-space linuxthreads, который был необыкновеннейшим костылём. И только потом, с развитием mozilla и java, корпы запилили нормальные треды.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от mittorn

Что плохого в GDI?

В GDI нет ничего плохого. Плохо то, что в Nokia/Symbian решили спаразитировать и сплагиатить достойную разработку Microsoft ни капли к ней не приблизившись по удобству использования API.

Если это PE32 - то так и должно быть. А PE32 - не самый плохой вариант исполняемых файлов

Там было что-то вроде E32Image. Nokia/Symbian просто сплагиатили виндовые названия.

Назови хотя бы одну вещь из тех, что мы получили взамен, которая была бы не сильно хуже

Ядро Linux внутри большинства современных смартфонов и какое-никакое UNIX-like окружение, вместо того изуверского и клоунского Win-like в API что предлагал Symbian. Уже только за это Google можно сказать спасибо.

EXL ★★★★★
()
Ответ на: комментарий от Shadow

В онтопик сначала занесли user-space linuxthreads, который был необыкновеннейшим костылём.

Вот я про него видимо и вспоминаю с болью. Собрать эти костыли было не так легко, но какой-то софт, уже не помню какой, очень его хотел.

anc ★★★★★
()
Ответ на: комментарий от anc

NT 3.1 was finally released in 1993, available in two editions: Windows NT 3.1 for workstations, and Windows NT 3.1 Advanced Server for servers.

Интересно, не знал. Я думал, что для workstations был только обычный 3.1

mittorn ★★★★★
() автор топика
Ответ на: комментарий от EXL

Ядро Linux внутри большинства современных смартфонов

stable api nonsense

какое-никакое UNIX-like окружение

unix-like огружение можно сделать и поверх другой среды. тут пожалуй относительно неплохая ситуация только на iOS, при услиовии жейлбрейка конечно, так что это не в счёт. Телефоны на qnx и на жму\пинусе сдохли. Android своей моделью лайфцикла приложений и отдельным юзером для каждого полностью отрицает весь unix-like нижестоящей системы и последние 10 лет добивает остаток накрутив дичайших правил selinux

Google можно сказать спасибо.

Занавес

mittorn ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Интересно, не знал. Я думал, что для workstations был только обычный 3.1

«обычный 3.1», если я правильно понял о чем вы, это не более чем оболочка :)

anc ★★★★★
()
Ответ на: комментарий от mittorn

и win32s

Который робил поверх 16-и битной ОС :)

anc ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)