К сожалению, я не могу так просто кинуть ссылку на вики. Такой ссылки нет. Но Вы можете посмотреть C++ standard 1.7 и 1.10. Можете посмотреть мою статейку. Там частично этот вопрос затронут. Хотя и не раскрыт полностью.
Автор молодец, создал проблему на пустом месте и теперь всем расказывает, что она есть.
1. Если не понимаешь зачем нужны и как пользоваться memory_order_acquire и иже с ними — не используй. По умолчанию все atomic операции в C++11 используют последовательную согласованность. Что даёт гарантию выполнения кода так, как он написан.
2. Код автора не верен. if (flag.compare_exchange_strong(expected, 1, memory_order_acquire))
{
// The lock succeeded
}
compare_exchange_strong — read-write операция. Почему он использует только acquire? Допустим мы имеем два потока, один сделал exchange(сиречь release), другой читает(acquire). Но тип операции указан как acquire, а значит этот release не будет синзронизирован с acquire. Поэтому код должен выглядеть как: if (flag.compare_exchange_strong(expected, 1, memory_order_acq_rel))
{
// The lock succeeded
}
3. В большинстве случаев надо использовать std::mutex и собратьев дабы не иметь никакой головной боли.
На одеск очень разный народ, так, что про психологию сложно говорить. Лично я работал с американцами, австралийцем и американским немцем. Все разные, абсолютно. Ничего общего. Кроме того, что у американцев денег больше, как мне кажется.
Нет, не предлагал. Это как-то само собой всегда разумелось. Второе, максимум третье сообщение это логин скайпа. Короткое интервью и поехали. Правда все мои заказы долгосрочные. Самый короткий был 2 месяца.
Устный желателен, т.к. некоторые заказчики предпочитают общаться через скайп, но это скорее исключение
Вы правда считаете, что поработав пару месяцев с oDesk можете говорить о статистике? У меня, к примеру, не было ни одного заказчика, с которым я не говорил голосом. Вру, был один. Кидала, я его вычислил еще до начала работы с ним.
А вообще, интересно всё это. Уже мануалы по oDesk пошли, неужели люди совершенно думать не хотят? Я правда не понимаю, что там может быть непонятного…
Думаете это реально? Сколько по Вашему таких подключениий, которые потребуется проверить?
Теоретически всё возможно, конечно, а вот практически это малореализуемо. Да и цель то, убрать широкие массы от некоторых источников, все каналы перекрыть невозможно. Если только кабели не рубить.
А Вы представляете себе СОРМ вообще? Или как?
Думаю, что не очень иначе бы не писали подобной ерунды, про то как СОРМ «отреагирует». Скажу по секрету — никак.
А если и добавят когда-то реакцию на шифрованный трафик, то это не даст никакой пользы. Он шифрованный к очень большой части интернета. Очень большой.
Ага, «весь интернет». Как то без применения всего вышеперечисленного учились и проблем никаких не испытывали. Может быть даже проблем испытывали меньше за счёт не использования вышеперечисленных сайтов :)
Спасибо, я просто когда баловался с natvis для Qt у меня были проблемы со static и со случаем описанным выше. Вероятно, что я делал, что-то не так. К Вам можно будет обратиться в случае чего? А то информации по natvis не очень много.
И еще вопрос: Предположим у нас есть класс A, у него есть поле int, и есть класс B, который содержит поле типа A. Можем ли мы в визуализаторе класса B получить доступ к полю int класса A, если у нас нет визуализатора для A?
Спасибо. Вы бы добавили описание нового метода с примерами сложных конструкций, с которыми Вам пришлось столкнуться. Понятно, что добавлять в эту заметку уже не стоит.
Есть Express версия. Так, что можно и не покупать.
Релиза может и нет, зато RC давно в паблике есть. Да и релиз скоро туда же пойдёт.
VS 2010 больше не считается, Вы дже на неё баг создать не можете, поэтому и говорить о ней нечего.
не спорю. Но баг то компиляторный. Я прекрасно понимаю, о чем Ваша статья. Но комментарии о «непогрешимости» компиляторов, я полагаю, всё же не об этом. Из неверного кода у меня 2 примера: раз два
1. Если не понимаешь зачем нужны и как пользоваться memory_order_acquire и иже с ними — не используй. По умолчанию все atomic операции в C++11 используют последовательную согласованность. Что даёт гарантию выполнения кода так, как он написан.
2. Код автора не верен.
if (flag.compare_exchange_strong(expected, 1, memory_order_acquire)) { // The lock succeeded }
compare_exchange_strong — read-write операция. Почему он использует только acquire? Допустим мы имеем два потока, один сделал exchange(сиречь release), другой читает(acquire). Но тип операции указан как acquire, а значит этот release не будет синзронизирован с acquire. Поэтому код должен выглядеть как:
if (flag.compare_exchange_strong(expected, 1, memory_order_acq_rel)) { // The lock succeeded }
3. В большинстве случаев надо использовать std::mutex и собратьев дабы не иметь никакой головной боли.
2. 1% больше 30$ для сумм, которые я вывожу регулярно.
Вы правда считаете, что поработав пару месяцев с oDesk можете говорить о статистике? У меня, к примеру, не было ни одного заказчика, с которым я не говорил голосом. Вру, был один. Кидала, я его вычислил еще до начала работы с ним.
А вообще, интересно всё это. Уже мануалы по oDesk пошли, неужели люди совершенно думать не хотят? Я правда не понимаю, что там может быть непонятного…
Теоретически всё возможно, конечно, а вот практически это малореализуемо. Да и цель то, убрать широкие массы от некоторых источников, все каналы перекрыть невозможно. Если только кабели не рубить.
Думаю, что не очень иначе бы не писали подобной ерунды, про то как СОРМ «отреагирует». Скажу по секрету — никак.
А если и добавят когда-то реакцию на шифрованный трафик, то это не даст никакой пользы. Он шифрованный к очень большой части интернета. Очень большой.
Релиза может и нет, зато RC давно в паблике есть. Да и релиз скоро туда же пойдёт.
VS 2010 больше не считается, Вы дже на неё баг создать не можете, поэтому и говорить о ней нечего.
раз
два
Оба бага из STL