DIMAN123456789 #441 12 июня 2013 (изменено) неужто в Киеве все так хреново с зп http://habrahabr.ru/...ou/blog/182728/ты не больше, чем полгода назад узнавал может ли жава синиор рассчитывать на 2к.я конечно понимаю, что ты браузерки за много кк пишешь, но в твоей дыре зп ниже, чем в КиевеТак для моей дыры 2к это и нормально :tusila-zavodila: И то, эти 2к середина на Киевских графиках. А в Москве зп программистов начинаются от 3-4к и до 7-8. Я просто удивлен что в Киеве такие низкие зп. Все-таки столица. Я думаю Самару нужно сравнить с Одессой. В Одессе не знаю какие зп. Изменено 12 июня 2013 пользователем DIMAN123456789 Поделиться сообщением Ссылка на сообщение
justice_st #442 12 июня 2013 http://stackoverflow.com/questions/17068914/beginthread-ex-c3861-identifier-not-foundрешил короче погрузиться снова в плюсы, хелпуем по сабжу Поделиться сообщением Ссылка на сообщение
Mr.Blonde #443 12 июня 2013 http://stackoverflow...ifier-not-foundрешил короче погрузиться снова в плюсы, хелпуем по сабжуответил тебе :) http://ru.iccup.com/dota/details/1295953.html ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ СВЕН ТП СВЕН ПУШИТ СВЕН ХЕКС СВЕН ДАБЛКИЛЛ СВЕН 7ОО КРИПОВ Поделиться сообщением Ссылка на сообщение
justice_st #444 12 июня 2013 (изменено) там теперь другая херня вылезла, текст ошибки очень информативен Error 2 error C2664: '_beginthread' : cannot convert parameter 1 from 'unsigned int (__stdcall *)(void *)' to 'void (__cdecl *)(void *)' Изменено 12 июня 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Mr.Blonde #445 12 июня 2013 У тебя тип указателя на функцию не соответствует тому, который требуется в аргументе. Сделай свою функцию такой же по сигнатуре. Думаю что в этом случае тебе достаточно поменять тип возвращаемого значения. Сообщение же достаточно понятное: не могу преобразовать тип первого аргумента фигня1 к фигне2. фигня1 это всего лишь тип указателя на функцию - просто он так страшно записывается, это всё из си унаследовано. http://ru.iccup.com/dota/details/1295953.html ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ СВЕН ТП СВЕН ПУШИТ СВЕН ХЕКС СВЕН ДАБЛКИЛЛ СВЕН 7ОО КРИПОВ Поделиться сообщением Ссылка на сообщение
rubish #446 12 июня 2013 А в Москве зп программистов начинаются от 3-4к и до 7-8. это вряд ли. ну и так же не стоит забывать, что затраты на жизнь в Москве по меньшей мере в 2 раза выше, чем в Киеве. кроме того зарплата указывается явно до уплаты налогов Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Mr.Blonde #447 12 июня 2013 7-8к ? таких зарплат быть не может в принципе, разве что в банках каких-нибудь для крупных руководителей http://ru.iccup.com/dota/details/1295953.html ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ СВЕН ТП СВЕН ПУШИТ СВЕН ХЕКС СВЕН ДАБЛКИЛЛ СВЕН 7ОО КРИПОВ Поделиться сообщением Ссылка на сообщение
Kant #448 12 июня 2013 там теперь другая херня вылезла, текст ошибки очень информативен Error 2 error C2664: '_beginthread' : cannot convert parameter 1 from 'unsigned int (__stdcall *)(void *)' to 'void (__cdecl *)(void *)'твоя функция возвращает инт, да еще и __stdcall непонятно зачем.А тебе нужна __cdecl void Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
justice_st #449 12 июня 2013 ПРИШЕЛ 144К РЕПЫ ВСЕ НА ИЗЕЧАХ РАЗРУЛИЛ :pray: :pray: :mameprivet: Поделиться сообщением Ссылка на сообщение
rubish #450 12 июня 2013 http://habrahabr.ru/company/it_dominanta/blog/147866/ Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
justice_st #451 12 июня 2013 (изменено) чето я запутался - как занять мутекс и как проверить мутекс на занятость?if (WaitForSingleObject(hMutex, 100)!=WAIT_TIMEOUT ) правильно?еще сраный баг с консолью бесит-строки из потоков выводятся одновременно и перемешиваются - http://stackoverflow.com/questions/9332263/synchronizing-std-cout-output-multi-thread тут 180к написал так что я нихера не понял Изменено 12 июня 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Mr.Blonde #452 12 июня 2013 http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(v=vs.85).aspx Return valueIf the function succeeds, the return value is a handle to the newly created mutex object.If the function fails, the return value is NULL. To get extended error information, call GetLastError.If the mutex is a named mutex and the object existed before this function call, the return value is a handle to the existing object, GetLastError returns ERROR_ALREADY_EXISTS, bInitialOwner is ignored, and the calling thread is not granted ownership. However, if the caller has limited access rights, the function will fail with ERROR_ACCESS_DENIED and the caller should use the OpenMutex function. А, тебя не именованные мьютексы интересуют.Короче, у мьютекса скорее всего нет проверки на "занятость". Можно просто начать его ожидание. И да, соответственно тебе вернется код результата. Либо сразу, либо через N миллисекунд. Так что да, примерно так, как ты и делаешь. http://ru.iccup.com/dota/details/1295953.html ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ СВЕН ТП СВЕН ПУШИТ СВЕН ХЕКС СВЕН ДАБЛКИЛЛ СВЕН 7ОО КРИПОВ Поделиться сообщением Ссылка на сообщение
justice_st #453 12 июня 2013 (изменено) if (WaitForSingleObject(hMutex, 100)!=WAIT_TIMEOUT ) { вот так все работаетбеда только с выводом, всё перемешиваетсяhttp://stackoverflow.com/questions/14010147/corrupted-output-with-c-cin-cout-threads-and-sync-with-stdio не помогает Изменено 12 июня 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Tinplz #454 12 июня 2013 (изменено) Если есть возможность юзать буст - то просто юзай буст, и не еби себе мозг системным дерьмом.да и 11 плюсы поддерживают потоки из коробки. Изменено 12 июня 2013 пользователем Tinplz Поделиться сообщением Ссылка на сообщение
justice_st #455 12 июня 2013 (изменено) нужно в студии или в былдереThread #Thread #1 sets the resource value to 2 gets the resource9 Изменено 12 июня 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Kant #456 12 июня 2013 если у тебя строки перемешиваются, значит либо оба потока не проверяют мьютекс, либо они вообще смотрят разные мьютексы другого варианта быть не может. и где исходник блеадь Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
justice_st #457 12 июня 2013 // thr_windh.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include "iostream" #include "process.h" using namespace std; HANDLE hMutex; int gRequiredIterations=0; enum ConsoleColor { Black = 0, Blue = 1, Green = 2, Cyan = 3, Red = 4, Magenta = 5, Brown = 6, LightGray = 7, DarkGray = 8, LightBlue = 9, LightGreen = 10, LightCyan = 11, LightRed = 12, LightMagenta = 13, Yellow = 14, White = 15 }; void SetColor(ConsoleColor extText, ConsoleColor extBackground) { //sets the console output text color to extText and background to extBackground HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOut, (WORD)((extBackground << 4) | extText)); } class __iterator { int innerValue; public: __iterator() : innerValue() { } void increase() { this->innerValue = this->innerValue++; if (this->innerValue==gRequiredIterations) { //add some delay to display this message after threads terminated Sleep(10); SetColor(Red,White); cout << "Objective completed. ("<<this->innerValue<<" iterations done, "<<gRequiredIterations<<" required)" <<endl; } } int get__inner() const { return innerValue; } }; __iterator gCurrentIterations; static unsigned __stdcall threadFunc(void *params) { //old function - check if iterations required before checking if mutex available fails into some extra unwanted iterations /*do { while (gCurrentIterations.get__inner()<gRequiredIterations) { int *x = static_cast<int*>(params); if (WaitForSingleObject(hMutex, 100)!=WAIT_TIMEOUT ) { //WaitForSingleObject(hMutex, INFINITE); Sleep(100); SetColor(Black,Green); cout << "\nThread #"<<*x<<" gets the resource"<<endl; Sleep(900); ReleaseMutex(hMutex); gCurrentIterations.increase(); SetColor(Black,Green); cout << "\nThread #"<<*x<<" sets the resource value to " << gCurrentIterations.get__inner() << endl; Sleep(100); } else { Sleep(50); SetColor(Black,Red); cout<<"\nThread #"<<*x<<" can not access to resource, retrying in 100 msecs"<<endl; Sleep(50); } };*/ int *x = static_cast<int*>(params); do { if (WaitForSingleObject(hMutex, 100)!=WAIT_TIMEOUT ) { //resource available if (gCurrentIterations.get__inner()<gRequiredIterations) { //there is some work to do Sleep(100); SetColor(Black,Green); cout << "Thread #"<<*x<<" gets the resource"<<endl; Sleep(900); gCurrentIterations.increase(); SetColor(Black,Green); cout << "Thread #"<<*x<<" sets the resource value to " << gCurrentIterations.get__inner() << endl; Sleep(100); ReleaseMutex(hMutex); } else { //job is done SetColor(Red,White); cout << "Thread #"<<*x<<" terminated"<<endl; break; } } else { //mutex unavailable Sleep(50); SetColor(Black,Red); cout<<"Thread #"<<*x<<" can not access to resource, retrying in 100 msecs"<<endl; Sleep(50); } } while (true); //while (gCurrentIterations.get__inner()<gRequiredIterations); return NULL; } int _tmain(int argc, _TCHAR* argv[]) { SetColor(Red,White); cout << "Please set iteration count: "; cin >> gRequiredIterations; gCurrentIterations = __iterator(); hMutex=CreateMutex(NULL,FALSE,NULL); unsigned int x=1; _beginthreadex(NULL, 0, &threadFunc, &x, 0, 0); unsigned int y=2; _beginthreadex(NULL, 0, &threadFunc, &y, 0, 0); int i; cin >> i; return 0; }нахуярил слипов, заебись теперь :D Поделиться сообщением Ссылка на сообщение
Kant #458 12 июня 2013 :opasnoste: :opasnoste: :opasnoste: :opasnoste: :opasnoste: :opasnoste: :opasnoste: поубирай нахуй все слипы и вместо 100 миллисекунд в WaitForSingleObject поставь INFINITE. Никакие потоки не должны срабатывать вперемешку и зачем какой-то __iterator что за пиздец там творится Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
justice_st #459 12 июня 2013 (изменено) если их убрать то все надписи впизду перемешаютсяитератор это я родил для эвента пойду спать короч Изменено 12 июня 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Kant #460 12 июня 2013 они не могут перемешаться, они работают исключительно поочереди.Сначала один поток, потом другой. Порядок их не определен, но сами строки будут вылазить целиком и полностью. Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение