小编Kai*_*aiJ的帖子

互斥锁应该存储在main还是对象中?

以C中的对象为例:

/* object.h */

typedef struct Object Object;

Object* createObject();
void freeObject(Object* object);

int getObjectNumber(Object* object);
void incrementObjectNumber(Object* object);
Run Code Online (Sandbox Code Playgroud)

这是一种非常简单的不透明类型,它存储一个数字并可以递增。

为了使我的代码线程安全,我有两个选择。第一种是在对象中存储互斥量:

void
func(Object* object)
{
    incrementObject(object);
}

int
main()
{
    Object* object = createObject();

    Thread thread1 = startThread(func, object);
    Thread thread2 = startThread(func, object);

    waitThread(thread1);
    waitThread(thread2);

    freeObject(object);
}
Run Code Online (Sandbox Code Playgroud)

第二种是将互斥锁存储在main中:

void
func(Object* object, Mutex mutex)
{
    lockMutex(mutex);
    incrementObject(object);
    unlockMutex(mutex);
}

int
main()
{
    Object* object = createObject();

    Mutex mutex;

    Thread thread1 = startThread(func, object, mutex);
    Thread thread2 = startThread(func, object, mutex); …
Run Code Online (Sandbox Code Playgroud)

c mutex thread-safety

2
推荐指数
1
解决办法
50
查看次数

打印单击按钮的文本tkinter

这是我的代码:

from tkinter import *    

def command(d):
   print(d)

a = Tk()
b = []

for c in range(0, 5):
    b.append(Button(a, text=c, command=lambda: command(c)))
    b[c].pack()

a.mainloop()
Run Code Online (Sandbox Code Playgroud)

运行脚本时,按钮全部打印4,而我希望它们打印显示在它们上面的数字.你怎么能这样做?

我使用的是Python 3.4

python tkinter

1
推荐指数
1
解决办法
3091
查看次数

标签 统计

c ×1

mutex ×1

python ×1

thread-safety ×1

tkinter ×1