Thread overview | ||||||
---|---|---|---|---|---|---|
|
June 26, 2015 Struct vs. Class | ||||
---|---|---|---|---|
| ||||
I have still some classes lying around in my code. As threading is becoming more and more of an issue, classes and OOP in general turn out to be a nuisance. It's not so hard to turn the classes into structs, a lot of classes are in fact singletons (yes, I've been kinda fading out classes for a while now). My question is now, what do I have to keep in mind if I turn a cached class into a cached struct, i.e. initProgram() { auto myClass = new AwesomeDoEverything.instance(); // lives for the rest of the program, is a singleton } // ... myClass.call(input); initProgram() { auto myStruct = AwesomeDoEverything(); // lives for the rest of the program } // ... myStruct.call(input); // Can live in different threads without reinitializing it. Or is there a way I can make a singleton class "thread-able"? I cannot afford to re-initialize certain classes / structs because I don't wanna hit the file system every time I do so. |
June 26, 2015 Re: Struct vs. Class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris | On Fri, 26 Jun 2015 11:11:15 +0000 Chris via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > I have still some classes lying around in my code. As threading is becoming more and more of an issue, classes and OOP in general turn out to be a nuisance. It's not so hard to turn the classes into structs, a lot of classes are in fact singletons (yes, I've been kinda fading out classes for a while now). My question is now, what do I have to keep in mind if I turn a cached class into a cached struct, i.e. > > initProgram() > { > auto myClass = new AwesomeDoEverything.instance(); // lives > for the rest of the program, is a singleton > } > > // ... > > myClass.call(input); > > initProgram() > { > auto myStruct = AwesomeDoEverything(); // lives for the rest > of the program > } > > // ... > > myStruct.call(input); // Can live in different threads without > reinitializing it. > > Or is there a way I can make a singleton class "thread-able"? > > I cannot afford to re-initialize certain classes / structs because I don't wanna hit the file system every time I do so. http://dlang.org/library/std/concurrency/init_once.html |
June 26, 2015 Re: Struct vs. Class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris | On Fri, 26 Jun 2015 11:11:15 +0000 Chris via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > I have still some classes lying around in my code. As threading is becoming more and more of an issue, classes and OOP in general turn out to be a nuisance. It's not so hard to turn the classes into structs, a lot of classes are in fact singletons (yes, I've been kinda fading out classes for a while now). My question is now, what do I have to keep in mind if I turn a cached class into a cached struct, i.e. > > initProgram() > { > auto myClass = new AwesomeDoEverything.instance(); // lives > for the rest of the program, is a singleton > } > > // ... > > myClass.call(input); > > initProgram() > { > auto myStruct = AwesomeDoEverything(); // lives for the rest > of the program > } > > // ... > > myStruct.call(input); // Can live in different threads without > reinitializing it. > > Or is there a way I can make a singleton class "thread-able"? > > I cannot afford to re-initialize certain classes / structs because I don't wanna hit the file system every time I do so. bad link: http://dlang.org/phobos/std_concurrency.html#.initOnce |
June 26, 2015 Re: Struct vs. Class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozák | On Friday, 26 June 2015 at 11:28:38 UTC, Daniel Kozák wrote:
>
> On Fri, 26 Jun 2015 11:11:15 +0000
> Chris via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
>
>> I have still some classes lying around in my code. As threading is becoming more and more of an issue, classes and OOP in general turn out to be a nuisance. It's not so hard to turn the classes into structs, a lot of classes are in fact singletons (yes, I've been kinda fading out classes for a while now). My question is now, what do I have to keep in mind if I turn a cached class into a cached struct, i.e.
>>
>> initProgram()
>> {
>> auto myClass = new AwesomeDoEverything.instance(); // lives
>> for the rest of the program, is a singleton
>> }
>>
>> // ...
>>
>> myClass.call(input);
>>
>> initProgram()
>> {
>> auto myStruct = AwesomeDoEverything(); // lives for the rest
>> of the program
>> }
>>
>> // ...
>>
>> myStruct.call(input); // Can live in different threads without
>> reinitializing it.
>>
>> Or is there a way I can make a singleton class "thread-able"?
>>
>> I cannot afford to re-initialize certain classes / structs because I don't wanna hit the file system every time I do so.
> bad link: http://dlang.org/phobos/std_concurrency.html#.initOnce
Thanks a million! This might do the trick and my classes can live happily ever after :-)
|
Copyright © 1999-2021 by the D Language Foundation