Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (1 пользователь, 0 гостей)

Rooster

Программирование[11]

var  

304 пользователя проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(изменено)
  Just.Doit написал 02.02.2022 в 15:08:

определению асинхронная работа - это работа не в том же потоке управления

Какое-то фиговое ты определение дал, не? Классический вопрос для собеса: "отличие асинхронности от многопоточности". А у тебя и то и то в определение входит 


Изменено пользователем besteady

 

Поделиться сообщением


Ссылка на сообщение
  besteady написал 02.02.2022 в 15:50:

Классический вопрос для собеса: "отличие асинхронности от многопоточности".

 

И как на него отвечать предполагается


towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
  Vova написал 02.02.2022 в 15:36:

придумали разные reader-writer локи на случай если тебе они нужны

Для read лок не нужен пишут 


 

Поделиться сообщением


Ссылка на сообщение

 

Я только алгоритмические задачи умею решать на собесах Больше ничего не умею


towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
  Vova написал 02.02.2022 в 15:57:
  besteady написал 02.02.2022 в 15:50:

 

И как на него отвечать предполагается

А я не знаю 

Там где я это прочитал (хабро статья) ответа вроде не было.

Ну я бы наверное ответил, что для асинхронности в отличие от многопоточности обязательно нужна независимость задачи, то есть мы с концами отдаем работу делаться, а потоки могут и над одной работать (но потоки управления будут при этом разные) 


 

Поделиться сообщением


Ссылка на сообщение
  besteady написал 02.02.2022 в 16:04:

Там где я это прочитал (хабро статья) ответа вроде не было.

 

Ахахаха гениально


towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
  besteady написал 02.02.2022 в 15:57:
  Vova написал 02.02.2022 в 15:36:

Для read лок не нужен пишут 

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

  besteady написал 02.02.2022 в 16:04:
  Vova написал 02.02.2022 в 15:57:

А я не знаю 

Там где я это прочитал (хабро статья) ответа вроде не было.

Ну я бы наверное ответил, что для асинхронности в отличие от многопоточности обязательно нужна независимость задачи, то есть мы с концами отдаем работу делаться, а потоки могут и над одной работать (но потоки управления будут при этом разные) 

Асинхронное выполнение - когда ты не дожидаешься результата выполнения

Поделиться сообщением


Ссылка на сообщение
  Grohuf написал 02.02.2022 в 16:06:

Асинхронное выполнение - когда ты не дожидаешься результата выполнения

Ну это коряво звучит

Отсутствие синхронизации лучше между выполнением задач лучше имхо 


 

Поделиться сообщением


Ссылка на сообщение
  Vova написал 02.02.2022 в 16:09:

Я имел ввиду это

 

https://man7.org/linux/man-pages/man2/flock.2.html

А я по-твоему про что цитату скидывал? Эта штука не защищает структуры данных, связанные с дескриптором.

Поделиться сообщением


Ссылка на сообщение
(изменено)
  besteady написал 02.02.2022 в 15:50:
  Just.Doit написал 02.02.2022 в 15:08:

Какое-то фиговое ты определение дал, не? Классический вопрос для собеса: "отличие асинхронности от многопоточности". А у тебя и то и то в определение входит 

 

ну вопрос не имеет смысла и детектит идиота в собеседующем

термина многопоточность в информатике/теории вычислений/CS вообще особо нет. это эдакий базворд обозанчающий что либо связанное с количеством потоков > 1
 

есть конкурентность вычислений, есть параллелизм, есть асинхронность. и эти вещи ортогональны чуть менее чем полностью

 

  besteady написал 02.02.2022 в 16:19:
  Grohuf написал 02.02.2022 в 16:06:

Ну это коряво звучит

Отсутствие синхронизации лучше между выполнением задач лучше имхо 

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

ставишь лок и лочишься

от этого каждая отдельная задача асинхронной не перестает быть.

 

у тебя есть поток выполнения/управления (не путать с потоком ОС, или тредом в джаве, скорее это просто последовательность инструкций написанных в семантике что после вычесления очередной инструкции, произойдет вычисление следующией, либо условный переход если это if и все такое)

если какое-то вычисление выносится вне этого потока, а в текущем потоке лишь производится "инициация" или "отправка" на выполнение этого вычисления - то такое вычисление считается асинхронным.

ты при этом можешь продолжить делать что-от еще, или отправить еще 100 таких вычислений. И затем ОЖИДАТЬ РЕЗУЛЬАТАТА выполнения этих асинхронных задач. а можешь не ждать. при этом ждешь ты или нет не влияет на определение асинхронности самих этих задач


Изменено пользователем Just.Doit

 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
  Just.Doit написал 02.02.2022 в 16:46:

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

ставишь лок и лочишься

от этого каждая отдельная задача асинхронной не перестает быть.

Если ты дожидаешься выполнения задачи, то это синхронное выполнение

UglyBastard понравилось это

Поделиться сообщением


Ссылка на сообщение

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

 


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

и кстати если ты засабмитешь асинхронное вычесление, и потом сразу же повиснешь на блокирующем ожидании ее результата (через фьючу или подобный api) - это всеравно будет асинхронное вычисление. просто ты в потоке заблокировался на ожидание резульата. оно практически эквивалентно выполнению не асинхронно, но не совсем тк могут быть нюансы. потом что асинхронное вычисление может быть выполнено на другом треде, на другом тредпуле (например на блокинг пуле, или наоборот на CPU bound пуле, или на low priority пуле), а самое главное, ожидание на текущем треде может быть подвержено оптимизации с вытесняющей многозадачностью (долго объяснять что именно это может давать)

  Grohuf написал 02.02.2022 в 17:01:

Если ты дожидаешься выполнения задачи, то это синхронное выполнение

ноуп


 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
  Just.Doit написал 02.02.2022 в 17:02:

ноуп

"Вздыхает"

Ты понимаешь, что когда ты дергаешь какую-то синхронную функцию send() у какого-то модуля, то ты не можешь знать, выполняет он задачу на том же потоке, или на другом? Ты понимаешь, что асинхронно можно выполнить задачу на этом же потоке?

Поделиться сообщением


Ссылка на сообщение
(изменено)
  Grohuf написал 02.02.2022 в 17:10:
  Just.Doit написал 02.02.2022 в 17:02:

"Вздыхает"

Ты понимаешь, что когда ты дергаешь какую-то синхронную функцию send() у какого-то модуля, то ты не можешь знать, выполняет он задачу на том же потоке, или на другом? Ты понимаешь, что асинхронно можно выполнить задачу на этом же потоке?

конечно понимаю

но речь то шла не об этом (опять)

ты придумал себе кейс и споришь со мной когда я говорю про другой кейс, уже во второй раз, ты нормальный?

 

у тебя есть что-то что принимает асинхронные вычисления на выполение - обозначим это методом "execAsync(thunk)", который возвращает future/promise результата

если ты тутже встанешь на ожидание этого future/promise, у тебя само вычисление, отправленное на асинхронное выполнение, от этого синхронным не станет. другими словами строчка "execAsync(thunk)" как запускала асинхронное вычисление, так и запускает его. НЕЗАВИСИМО ОТ ТОГО встанешь ты потом наожидание результата или нет.

 


Изменено пользователем Just.Doit

 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
  Just.Doit написал 02.02.2022 в 16:46:

термина многопоточность в информатике/теории вычислений/CS вообще особо нет. это эдакий базворд обозанчающий что либо связанное с количеством потоков > 1

Ну это по идее и есть параллелизм. Мб я слово перепутал. Разве что parallelism судя по статье в вики в отличие от concurrent подразумевает несколько физических потоков, когда concurrent может быть виртуальной 

То есть это concurrent скорее


 

Поделиться сообщением


Ссылка на сообщение
  Grohuf написал 02.02.2022 в 17:10:

какую-то синхронную функцию send() у какого-то модуля, то ты не можешь знать, выполняет он задачу на том же потоке

ну кстати это не до конца корректное утверждение

если я вызвал функцию send() с синхронным апи, то тело этой функции выполнится на том же потоке ОС, другой вопрос не будет ли в этом теле чего-то что запускает какие-то другие асинхронные вычисления или вообще создает потоки - но само тело функции выполнится синхронно на этом же потоке. такова семантика большинства языков


 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
  Just.Doit написал 02.02.2022 в 17:17:
  Grohuf написал 02.02.2022 в 17:10:

ну кстати это не до конца корректное утверждение

если я вызвал функцию send() с синхронным апи, то тело этой функции выполнится на том же потоке ОС, другой вопрос не будет ли в этом теле чего-то что запускает какие-то другие асинхронные вычисления или вообще создает потоки - но само тело функции выполнится синхронно на этом же потоке. такова семантика большинства языков

Тело может содержать только постановку задачи и ожидания ее выполнения

Поделиться сообщением


Ссылка на сообщение
  Just.Doit написал 02.02.2022 в 17:14:
  Grohuf написал 02.02.2022 в 17:10:

конечно понимаю

но речь то шла не об этом (опять)

ты придумал себе кейс и споришь со мной когда я говорю про другой кейс, уже во второй раз, ты нормальный?

 

у тебя есть что-то что принимает асинхронные вычисления на выполение - обозначим это методом "execAsync(thunk)", который возвращает future/promise результата

если ты тутже встанешь на ожидание этого future/promise, у тебя само вычисление, отправленное на асинхронное выполнение, от этого синхронным не станет. другими словами строчка "execAsync(thunk)" как запускала асинхронное вычисление, так и запускает его. НЕЗАВИСИМО ОТ ТОГО встанешь ты потом наожидание результата или нет.

 

 

Показать больше  

Поэтому и надо говорить, что суть в независимости выполняемой отдаваемой задачи, что по мере её выполнения не нужно синхронизироваться.

 

Если ты просто делишься на потоки, чтобы умножать разные куски матрицы, а ещё один поток будет сборщик мусора, то это не будет асинхронное программирование, потому что задачи потоков зависят друг от друга, хотя поток выполнения у них разный будет


 

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


×
×
  • Создать...