Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> thread и atomic, как добить? заставить код работать 
V
    Опции темы
asmdzen
Дата 3.7.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



нашел код:
Код

#include <iostream>
#include <thread>
#include <atomic>
#include <assert.h>

using namespace std;

class TestableMutex {
public:
     void lock()    {   m.lock();  id = this_thread::get_id(); }
     void unlock()  {   id = (thread::id)0;  m.unlock(); }
     bool try_lock(){   bool b = m.try_lock();
                        if( b ) id = this_thread::get_id();
                        return b; }
     bool is_held() {   return id == this_thread::get_id(); }
private:
     mutex m;
     atomic<thread::id> id;
     // for recursive mutexes, add a count (multiple lock by a thread)
};
     
class myClass{
private:
   int myInt_;
   TestableMutex mut_;

public:
   void lock()     {  mut_.lock(); } 
   bool try_lock() {  return mut_.try_lock(); } 
   void unlock()   {  mut_.unlock(); } 
   int& myInt(){ assert(mut_.is_held()); return myInt_; }
} myObj;

int main()
{
   lock_guard<myClass> tmpLock(myObj);
   cout << myObj.myInt();
   return 0;
}

http://drdobbs.com/go-parallel/article/224701827?pgno=3

не могу довести его до ума чтоб линковался и можно было его использовать. Помогите разобраться.
компилер MinGW 4.6.0 (сборка что стоит у boostcoder'а в подписи)

http://liveworkspace.org/code/72dd64b888d7...ed04f5a32aaddea

Это сообщение отредактировал(а) asmdzen - 3.7.2011, 10:20
PM MAIL   Вверх
azesmcar
Дата 3.7.2011, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



атомарные операции не портированы под windows (т.е. minGW).
PM   Вверх
asmdzen
Дата 3.7.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



azesmcar, а boost? в нем я atomic не нашел но может он где то закопан, т.е. можно использовать что-то другое в этих целях? 
PM MAIL   Вверх
azesmcar
Дата 3.7.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(asmdzen @  3.7.2011,  14:27 Найти цитируемый пост)
azesmcar, а boost? в нем я atomic не нашел но может он где то закопан, т.е. можно использовать что-то другое в этих целях?  

Нет его там. Портируемую реализацию можно взять в Intel TBB, еще есть в Qt. Для VS2005-2010 у меня есть реализация.

Это сообщение отредактировал(а) azesmcar - 3.7.2011, 14:30
PM   Вверх
asmdzen
Дата 3.7.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Цитата(azesmcar @  3.7.2011,  14:28 Найти цитируемый пост)
Для VS2005-2010 у меня есть реализация.

поделитесь? пожалуйста )
нужно под MinGW но если нету то можно проект и в студию перенести. (TBB тоже посмотрю)
(а с этим могут быть какие-то проблемы? http://www.chaoticmind.net/~hcb/projects/b...doc/index.html)
PM MAIL   Вверх
azesmcar
Дата 3.7.2011, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(asmdzen @  3.7.2011,  14:38 Найти цитируемый пост)
поделитесь? пожалуйста )

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

Цитата(asmdzen @  3.7.2011,  14:38 Найти цитируемый пост)
TBB тоже посмотрю

атомарные типы в TBB имеют схожий интерфейс с атомарными типами в C++0x. Но библиотека насколько я помню не бесплатна для разработки коммерческих проектов.
Цитата(asmdzen @  3.7.2011,  14:38 Найти цитируемый пост)
(а с этим могут быть какие-то проблемы? http://www.chaoticmind.net/~hcb/projects/b...doc/index.html) 

а что это? у меня даже не открывает. Но вообще могут конечно smile везде могут быть какие-то проблемы, ничто не идеально.

Это сообщение отредактировал(а) azesmcar - 3.7.2011, 20:32
PM   Вверх
asmdzen
Дата 3.7.2011, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Цитата(azesmcar @  3.7.2011,  20:31 Найти цитируемый пост)

Пожалуйста
 спасибо - прикручу.


Цитата(azesmcar @  3.7.2011,  20:31 Найти цитируемый пост)
у меня даже не открывает

форум склеил в конце скобку )
вот:
http://www.chaoticmind.net/~hcb/projects/b.../doc/index.html
PM MAIL   Вверх
azesmcar
Дата 3.7.2011, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(asmdzen @  3.7.2011,  20:54 Найти цитируемый пост)
форум склеил в конце скобку )
вот:
http://www.chaoticmind.net/~hcb/projects/b.../doc/index.html 

Автор мне не знаком и библиотека не входит в boost, но это в принципе не мешает ей работать smile

PM   Вверх
asmdzen
Дата 3.7.2011, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



azesmcar, спасибо, буду разбираться.
PM MAIL   Вверх
boostcoder
Дата 4.7.2011, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(azesmcar @  3.7.2011,  10:59 Найти цитируемый пост)
атомарные операции не портированы под windows (т.е. minGW).

ошибаетесь.
их портировать и не нужно, ибо компилятор сам генерит инлайн вставки из следующих инструкций: http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gc...c-Builtins.html

asmdzen, вот моя первая сборка mingw на базе gcc-4.7.0: i686-pc-mingw32-bin-4.7.0-snapshop-20110617-rev-0
проверил на сколько смог. все работает: mutex, atomic, thread, lock, timed_lock, condition_variable, e t.c...

надеюсь на днях соберу первую стабильную версию mingw на базе gcc-4.6.1. скрестите пальцы. ибо сборка gcc для вендус это процесс не для слабонервных smile 

Это сообщение отредактировал(а) boostcoder - 4.7.2011, 18:17
PM WWW   Вверх
asmdzen
Дата 4.7.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



boostcoder, спасибо за вашу работу, удобно писать код не замарачиваясь поиском библиотек/хидеров.
PM MAIL   Вверх
boostcoder
Дата 4.7.2011, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(asmdzen @  4.7.2011,  21:20 Найти цитируемый пост)
библиотек/хидеров

но учти, по приведенной мною ссылке, только mingw. никаких дополнительных библиотек там нет. все потому, что это во первых - сборка нестабильной версии. во вторых - это первая сборка вообще во всем инете, в которой из коробки работает весь threading-модуль из с++0x + LTO + OpenMP + Graphite smile 
другое дело тот mingw что в подписи.

Это сообщение отредактировал(а) boostcoder - 4.7.2011, 21:44
PM WWW   Вверх
asmdzen
Дата 4.7.2011, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Цитата(boostcoder @  4.7.2011,  21:25 Найти цитируемый пост)
другое дело тот mingw что в подписи.

то есть совместить не получится?
PM MAIL   Вверх
boostcoder
Дата 5.7.2011, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(asmdzen @  4.7.2011,  21:59 Найти цитируемый пост)
совместить не получится?

должно получится. попробую на досуге.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.