LINUX.ORG.RU

Сообщения lsv

 

c++, блокировка boost::shared_mutex

Имеем два варианта заблокировать шаред мьютекс. Поток блокирует мьютекс на запись, а основной поток пытается получить блокировку на чтение.

1. пробуем заблокировать через try_lock. всегда res==true

#include <boost/thread/shared_mutex.hpp>
#include <mutex>

boost::shared_mutex shared_mtx;
std::mutex mtx;

void thread_fn()
{
	shared_mtx.lock_upgrade();
	mtx.unlock();
	while (true) {
	}
}

void main() {
	mtx.lock();
	std::thread t(thread_fn);
	bool res=shared_mtx.try_lock_shared();
	t.join();
}
2. пытаемся заблокировать с ограничением по времени. тут res==false
#include <boost/thread/shared_mutex.hpp>
#include <mutex>

boost::shared_mutex shared_mtx;
std::mutex mtx;

void thread_fn()
{
	shared_mtx.lock_upgrade();
	mtx.unlock();
	while (true) {
	}
}

void main() {
	mtx.lock();
	std::thread t(thread_fn);
	bool res=shared_mtx.timed_lock(boost::get_system_time() + boost::posix_time::milliseconds(10)); 
	t.join();
}

так и должно быть или это баг такой?

 ,

lsv
()

перегрузка виртуальных функций.

есть вот такой код:

#include<iostream>

class BaseClass
{
public:
	virtual void f(int a, int b);
	virtual void f(float e, float f, int a, int b) =0;
};


void BaseClass::f(int a, int b) {
	return this->f( 0, 0, a, b);
}


class MyClass : public BaseClass
{
public:
	virtual void f(float e, float f, int a, int b) override {
		std::cout << "MyStorage" << std::endl;
	}
};
int main(int argc, char* argv[]) {
	MyClass *ms = new MyClass();
	ms->f(0, 10);
	return 0;
}

и ошибка компиляции

  In function 'int main(int, char**)': 
27:13: error: no matching function for call to 'MyClass::f(int, int)' 
27:13: note: candidate is:
21:15: note: virtual void MyClass::f(float, float, int, int) 21:15: note: candidate expects 4 arguments, 2 provided

а если вызывать так:

	BaseClass *ms = new MyClass();
	ms->f(0, 10);

то все работает. а почему?

 

lsv
()

Каким программам не нужны аналоги?

Часто видно, как появляется новые текстовый редактор, IDE, оконный менеджер, mp3 плеер, IM менеджер и все как один похожи друг на друга. А какой софт, по вашему мнению не нуждается в аналогах, поскольку альтернатив море+ маленький стакан?

lsv
()

способы создания инфраструктуры для «облаков»

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

1) Автоматическое нахождение новых групп другими группами

2) Автоматическое нахождение новых серверов в группе

3) Возможность горячего резервирования

Какую технологию (кросс платформенную) можете предложить?

P.S. Да, это богатство должно еще и на window 2003 и старше работать уметь.

lsv
()

hp-62 и двойная видеокарта

У меня ноут hp-g62. У него две видюхи ATI и INTEL. на старых ядрах (2.6.32) работает все ок. но при обновлении или при установке новых дистров с ядром 2.6.38 и выше вылетает с ошибкой. лог привести не могу, поскольку системе даже не удается загрузиться. но судя по логам на экране ошибка при загрузке модуля radeon. пробовал блокировать его при запуске, но проблему это не решает. Подскажите кто что может.

lsv
()

sscanf_s x64

Есть вот такой код на C:

short d=0,m=0,y=0,h=0,min=0,sec=0;
sscanf_s(str,"%d.%d.%d %d:%d:%d",&y,&m,&d,&h,&min,&sec); 

На 32 разрядной системе, при сканировании строки «2000.00.00 00:00:00» компилятор (тот, что поставляется с vs2010) выдает ошибку, что стек возле переменной sec нарушен. В чем проблема?

p.s. при замене short на unsigned int работает нормально. при замене на DWORD ошибка проявляется вновь.

P.P.S. ошибка проявилась на 64 разрядной системе

lsv
()

xslt copy

никак не пойму, что делает этот кусок

<xsl:template match=«node() | @*»>
   <xsl:copy>
      <xsl:apply-templates select=«node() | @*»/>
   </xsl:copy>
</xsl:template>
и сам принцип работы copy

lsv
()

[GTK#] [Gdk.Pixbuf] foreach pixel

Есть вот такой код:

unsafe{
	var width=workImage.Width;
	var height=workImage.Height;
	
        for(int y=0;y<height;y++)
		for(int x=0;x<width;x++){
			byte*p=((byte*)workImage.Pixels)+height*y+x;
			*p=0;
		}

переменная workImage имеет тип Gdk.Pixbuf. По идее, как только мы в объект image1 класса Gtk.Image передадим объект workImage:

 Gtk.Image image1;
 ...
 image1.Pixbuf=workImage

то должно быть отрисовано черное изображение, но на деле оно черное лишь процентов на 25. Может кто подскажет, где я ошибся?

lsv
()

Новости о git,hg,bzr и компании.

Может я что пропустил, но все рпавно спрошу: почему не публикуются новости о выходе новых версий сабжа? Это теперь офтопик или просто никому не интересно?

lsv
()

Непоследовательный доступ к массиву данных.

Есть набор измерений X1,X2,...,Xn. Таких измерений много (порядка 700 мб.). Каким образом проще всего обеспечить рандомный доступ к таким данным? Нужно адресоваться по ним, но хранить такое в ОЗУ нет возмодности (ее размер ~256-512). Есть ли готовые решения (либы, алгоритмы, методики).

lsv
()

[git] локальные правки.

Есть git репозиторий. есть две ветки master и draft. В draft есть иpменения, которые не должны попасть в master. Как такое сделать?

Хотелось чего нить вроде этого.

 

lsv
()

adsl,telnet,shell

Есть adsl модем. иногда зависает. чтобы его ребутнуть программно, то, один из вариантов, через телнет залогинится и выполнить команду reboot. Как бы это запихнуть в shell-script?

p.s. Вот пример сеанса:

~%=> telnet 192.168.1.1 10:01 pts/0
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
BCM96332 ADSL Router
Login: admin
Password:

reboot

...
...
...

lsv
()

Размеры репозитариев.

Не нашел в сети, пожтому решил спросить тут: В каком дисрибутиве самый большой репозиторий ПО?

lsv
()

[latex][eskdx] Рамка.

При использовании пакета eskdx печатается два вида рамок. Большая и меньше. Как сделать так, чтобы в рамке печаталось название текущей главы? Или предложите другой способ.

 ,

lsv
()

Непрерывные точки.

Есть картинка. Имеются пиксили нужно нам цвета. Необходимо найти контуры таких площадей, внутри которых пиксели только заданного цвета. Нужен наиболее эффективный алгоритм.

lsv
()

[emacs] перенос слов

Как сделать так, чтобы emacs делал переносы по словам, а не обравал слово в середине?

 

lsv
()

[scons] Имена файлов.

Имеется проект со следующей стркуторой:
/
-Sconstruct
---Core
****|__Sconscript
Когда запускается "scons -С .." из дирректории Core, то он выводит имена относительно корня проекта. Как сделать так, чтобы он выводил относительно Core или абсолютные пути к файлам?

lsv
()

[regexp][python] Помогите!

Есть исходный текст на С содержащий строки следующего вида:
/***
#include <assert.h>
*/

/***
Func1
assert(1+2==3)
*/
int func1(int a,int b)
{
return a+b
}


требуется составить регулярное выражение, для вытаскивания содержимого всех блоков между /*** и */.
использую python модуль re.

 ,

lsv
()

Latex-колонтитулы

Необходимо поставить в нижнем колонтитуле, по правому краю текст. Как это сделать?

lsv
()

emacs,cedet,tabbar

Использовал tabber для отображения вкладок, но после подключения cedet верхняя строка с вкладками пропала. конйиги взял с сйта Alex Ott. Не подскажите, как это исправить?

lsv
()

RSS подписка на новые темы