LINUX.ORG.RU

Сообщения Afx33

 

Атомарный инкремент

У меня есть несколько потоков, которые получают доступ к переменной m, при этом она увеличивается на единицу каждый раз при доступе. Я хочу быть уверен, что если первым доступ к счетчику имеет 1-ый поток, то он получает значение счетчика m, а второй поток, который обратился позже , получает значение m+1. Но вот незадача - операция инкремента не атомарна. Как быть?

unsigned get_m()
{
     return m++;
}

 

Afx33
()

pthread arg address confusing

Есть элементарная программа. Почему адрес структуры thr1_arg в функции-потоке отличается от адреса, передаваемого в pthread_create

struct thread_arg
{
        myclass<unsigned> *p;
        unsigned thr_num;
};

void *thr_fun(void *arg)
{
        thread_arg *cxt = (thread_arg *)(arg);
        printf("arg %p\n", arg);

        return (void *)0;
}

int main(void)
{
        int err;
        pthread_t t;
        myclass<unsigned> mc;

        thread_arg thr1_arg;
        thr1_arg.p = &mc;
        thr1_arg.thr_num = 1;

        printf("thr1_arg.p = %p &mc = %p &thr1_arg = %p\n", thr1_arg.p, &mc, &thr1_arg);

        err = pthread_create(&t, NULL, thr_fun, &thr1_arg);

        printf("2\n");
Получаю следующий вывод
thr1_arg.p = 0xbf816a18 &mc = 0xbf816a18 &thr1_arg = 0xbf816a10
2
arg 0xbf816a08

 

Afx33
()

Debian vim colorscheme doesn't work

Устанавливаю Debian 6, пытаюсь поменять цветовую схему в vim так :color desert или так :colorscheme desert, создаю /root/.vimrc и прописываю color desert - ничего не помогает, схема меняется, но визуально никаких изменений цветовых.

 , ,

Afx33
()

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