将指针重新分配给函数是否安全?

时间:2018-10-07 15:14:05

标签: go synchronization goroutine

我有可共享的对象。我们称之为OBJ。

我很少要更新它。并且能够不加锁定地经常阅读它。

我已经尝试过了:

<presetdef name="ant">
    <!-- workaround transfer.* not working in Java EE projects -->
    <ant>
        <propertyset>
            <propertyref prefix="transfer."/>
            <mapper from="transfer.*" to="*" type="glob"/>
        </propertyset>
    </ant>
</presetdef>

在此示例中,真正的可共享对象不是OBJ,而是函数“ secretFunc”。

通过在没有任何锁定的情况下替换secretFunc来完成此技巧,线程/ goroutine是否安全?我想避免使用func Initialize() (func() func() OBJ, func()) { genFunc := func() func() OBJ { OBJ := getNewObject() secretFunc := func() OBJ { return OBJ } return secretFunc } secretFunc := genFunc() timer := time.NewTicker(time.Duration(timeoutSec) * time.Second) finish := make(chan bool) go func() { for { select { case <-finish: close(finish) return case <-timer.C: secretFunc = genFunc() } } }() retFunc := func() func() OBJ { return secretFunc } shutDownRet := func() { finish <- true timer.Stop() } return retFunc, shutDownRet } CAS

如果这不安全,实现此安全性的模式(如果存在)是什么?

0 个答案:

没有答案